From ab16dec26b1262572f428dfe6daa29a86d518442 Mon Sep 17 00:00:00 2001
From: Petter Reinholdtsen
Date: Tue, 5 May 2020 05:19:32 +0000
Subject: [PATCH 01/40] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?=
=?UTF-8?q?=20Bokm=C3=A5l)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Currently translated at 86.7% (1091 of 1257 strings)
---
plinth/locale/nb/LC_MESSAGES/django.po | 55 ++++++++++----------------
1 file changed, 21 insertions(+), 34 deletions(-)
diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po
index 1205d713e..ece48cc66 100644
--- a/plinth/locale/nb/LC_MESSAGES/django.po
+++ b/plinth/locale/nb/LC_MESSAGES/django.po
@@ -15,9 +15,9 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
-"PO-Revision-Date: 2020-04-07 19:03+0000\n"
-"Last-Translator: Allan Nordhøy \n"
+"POT-Creation-Date: 2020-04-20 17:53-0400\n"
+"PO-Revision-Date: 2020-05-06 06:11+0000\n"
+"Last-Translator: Petter Reinholdtsen \n"
"Language-Team: Norwegian Bokmål \n"
"Language: nb\n"
@@ -25,7 +25,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.0-dev\n"
+"X-Generator: Weblate 4.1-dev\n"
#: doc/dev/_templates/layout.html:11
msgid "Page source"
@@ -36,10 +36,9 @@ msgid "FreedomBox"
msgstr "FreedomBox"
#: plinth/daemon.py:70
-#, fuzzy, python-brace-format
-#| msgid "Service %(service_name)s is running."
+#, python-brace-format
msgid "Service {service_name} is running"
-msgstr "Tjenesten {service_name} kjører."
+msgstr "Tjenesten {service_name} kjører"
#: plinth/daemon.py:96
#, python-brace-format
@@ -242,7 +241,6 @@ msgid "Select Disk or Partition"
msgstr "Velg disk eller partisjon"
#: plinth/modules/backups/forms.py:175
-#, fuzzy
msgid "Backups will be stored in the directory FreedomBoxBackups"
msgstr "Sikkerhetskopier vil bli lagret i mappen FreedomBoxBackups"
@@ -441,24 +439,12 @@ msgid "Are you sure that you want to remove this repository?"
msgstr "Er du sikker på at du ønsker å fjerne dette depotet?"
#: plinth/modules/backups/templates/backups_repository_remove.html:19
-#, fuzzy
-#| msgid ""
-#| "\n"
-#| " The remote repository will not be deleted.\n"
-#| " This just removes the repository from the listing on the backup "
-#| "page, you\n"
-#| " can add it again later on.\n"
-#| " "
msgid ""
"The remote repository will not be deleted. This just removes the repository "
"from the listing on the backup page, you can add it again later on."
msgstr ""
-"\n"
-" Fjerndepotet vil ikke bli slettet..\n"
-" Dette fjerner kun depotoppføringen fra listen på sikkerhetskopi-siden, "
-"du\n"
-" kan legge oppføringen tilbake senere.\n"
-" "
+"Fjerndepotet vil ikke bli slettet. Dette fjerner kun depotoppføringen fra "
+"listen på sikkerhetskopi-siden, du kan legge oppføringen tilbake senere."
#: plinth/modules/backups/templates/backups_repository_remove.html:31
msgid "Remove Location"
@@ -1634,18 +1620,14 @@ msgid "Firewall"
msgstr "Brannmur"
#: plinth/modules/firewall/components.py:118
-#, fuzzy, python-brace-format
-#| msgid "%(service_name)s is available only on internal networks."
+#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
-msgstr ""
-"Tjenesten %(service_name)s er kun tilgjengelig på interne nettverk."
+msgstr "Port {name} ({details}) tilgjengelig på interne nettverk"
#: plinth/modules/firewall/components.py:126
-#, fuzzy, python-brace-format
-#| msgid "%(service_name)s is available only on internal networks."
+#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
-msgstr ""
-"Tjenesten %(service_name)s er kun tilgjengelig på interne nettverk."
+msgstr "Port {name} ({details}) tilgjengelig på eksterne nettverk"
#: plinth/modules/firewall/components.py:131
#, python-brace-format
@@ -3400,7 +3382,6 @@ msgid "All web apps"
msgstr "Alle nettprogrammer"
#: plinth/modules/networks/__init__.py:40
-#, fuzzy
msgid ""
"Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or "
"PPPoE. Share that connection with other devices on the network."
@@ -3672,10 +3653,9 @@ msgid "Open"
msgstr "Åpen"
#: plinth/modules/networks/forms.py:297
-#, fuzzy, python-brace-format
-#| msgid "Choose how your {box_name} is connected to your network"
+#, python-brace-format
msgid "Specify how your {box_name} is connected to your network"
-msgstr "Velg hvordan din {box_name} er koblet til nettverket ditt"
+msgstr "Angi hvordan din {box_name} er tilkoblet ditt nettverket"
#: plinth/modules/networks/forms.py:304
#, python-brace-format
@@ -3693,6 +3673,10 @@ msgid ""
"adapter. {box_name} is directly connected to the Internet and all your "
"devices connect to {box_name} for their Internet connectivity.
"
msgstr ""
+"{box_name} er ruteren din
Din {box_name} har flere "
+"nettverksgrensesnitt, for eksempel flere Ethernett-innganger eller et Wifi-"
+"kort. {box_name} er koblet direkte til Internet og alle enhetene dine kan "
+"koble seg til {box_name} med Internett-forbindelsen sin.
"
#: plinth/modules/networks/forms.py:320
#, python-brace-format
@@ -3701,6 +3685,9 @@ msgid ""
"connection is directly attached to your {box_name} and there are no other "
"devices on the network. This can happen on community or cloud setups."
msgstr ""
+"Koblet direkte til Internett
Internett-forbindelsen "
+"din er koblet direkte til idn {box_name} og det er ingen andre enheter på "
+"nettverket. Dette kan gjelde fellesbokser eller skyoppsett.
"
#: plinth/modules/networks/forms.py:339
msgid "Choose your internet connection type"
From d437f6142324d8a4b84da6f79fd840729948dc8d Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Mon, 4 May 2020 12:42:16 -0400
Subject: [PATCH 02/40] snapshot: Set as essential module
Storage Snapshots will be installed by default. It will only be usable
if filesystem is btrfs. For other filesystems, a message is displayed
that it is not available.
Closes #1284.
Signed-off-by: James Valleroy
Reviewed-by: Sunil Mohan Adapa
---
plinth/modules/snapshot/__init__.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/plinth/modules/snapshot/__init__.py b/plinth/modules/snapshot/__init__.py
index 3d79c44e9..13faf8d48 100644
--- a/plinth/modules/snapshot/__init__.py
+++ b/plinth/modules/snapshot/__init__.py
@@ -17,6 +17,8 @@ from .manifest import backup # noqa, pylint: disable=unused-import
version = 4
+is_essential = True
+
managed_packages = ['snapper']
_description = [
From 17e3150a283b771839b88d7fdd69a73747d61af7 Mon Sep 17 00:00:00 2001
From: Michael Breidenbach
Date: Sun, 10 May 2020 10:00:53 +0000
Subject: [PATCH 03/40] Translated using Weblate (German)
Currently translated at 100.0% (1264 of 1264 strings)
---
plinth/locale/de/LC_MESSAGES/django.po | 81 ++++++++++----------------
1 file changed, 31 insertions(+), 50 deletions(-)
diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po
index 50c80b17c..43462e349 100644
--- a/plinth/locale/de/LC_MESSAGES/django.po
+++ b/plinth/locale/de/LC_MESSAGES/django.po
@@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-05-04 19:59-0400\n"
-"PO-Revision-Date: 2020-04-27 16:11+0000\n"
-"Last-Translator: nautilusx \n"
+"PO-Revision-Date: 2020-05-11 10:41+0000\n"
+"Last-Translator: Michael Breidenbach \n"
"Language-Team: German \n"
"Language: de\n"
@@ -19,7 +19,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.0.2-dev\n"
+"X-Generator: Weblate 4.1-dev\n"
#: doc/dev/_templates/layout.html:11
msgid "Page source"
@@ -976,20 +976,27 @@ msgid ""
"other communication servers can use it to establish a call between parties "
"who are otherwise unable connect to each other."
msgstr ""
+"Coturn ist ein Server zur Erleichterung von Audio-/Videogesprächen und -"
+"konferenzen durch die Bereitstellung einer Implementierung der Protokolle "
+"TURN und STUN. WebRTC-, SIP- und andere Kommunikationsserver können ihn "
+"verwenden, um eine Verbindung zwischen Parteien herzustellen, die sich sonst "
+"nicht miteinander verbinden können."
#: plinth/modules/coturn/__init__.py:35
msgid ""
"It is not meant to be used directly by users. Servers such as matrix-synapse "
"need to be configured with the details provided here."
msgstr ""
+"Sie ist nicht für die direkte Nutzung durch Benutzer gedacht. Server wie "
+"Matrix-Synapse müssen mit den hier gemachten Angaben konfiguriert werden."
#: plinth/modules/coturn/__init__.py:64
msgid "Coturn"
-msgstr ""
+msgstr "Coturn"
#: plinth/modules/coturn/__init__.py:65
msgid "VoIP Helper"
-msgstr ""
+msgstr "VoIP-Helfer"
#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22
msgid "TLS domain"
@@ -1006,12 +1013,12 @@ msgstr ""
#: plinth/modules/coturn/templates/coturn.html:15
msgid "Use the following URLs to configure your communication server:"
msgstr ""
+"Verwenden Sie die folgenden URLs zur Konfiguration Ihres "
+"Kommunikationsservers:"
#: plinth/modules/coturn/templates/coturn.html:26
-#, fuzzy
-#| msgid "The following storage devices are in use:"
msgid "Use the following shared authentication secret:"
-msgstr "Die folgenden Speichermedien werden verwendet:"
+msgstr "Verwenden Sie das folgende geteilte Authentifizierungsgeheimnis:"
#: plinth/modules/datetime/__init__.py:25
msgid ""
@@ -2078,23 +2085,17 @@ msgstr ""
"org\" target=\"_blank\"> Diskussionsforum."
#: plinth/modules/help/templates/help_feedback.html:26
-#, fuzzy
-#| msgid ""
-#| "If you find any bugs or issues, please use the issue "
-#| "tracker to let our developers know. To report, first check if the "
-#| "issue is already reported and then use the \"New issue\" button."
msgid ""
"If you find any bugs or issues, please use the issue "
"tracker to let our developers know. To report, first check if the issue "
"is already reported and then use the \"New issue\" button."
msgstr ""
-"Wenn Sie Fehler oder Probleme finden, verwenden Sie bitte den issue tracker, um unsere Entwickler darüber zu informieren. Um einen "
-"Bericht zu erstellen, überprüfen Sie zunächst, ob das Problem bereits "
-"gemeldet wurde und klicken Sie dann auf die Schaltfläche \"Neues Problem\"."
+"Wenn Sie Fehler oder Probleme finden, verwenden Sie bitte den issue tracker, um unsere Entwickler darüber zu informieren. Um "
+"einen Bericht zu erstellen, überprüfen Sie zunächst, ob das Problem bereits "
+"gemeldet wurde und klicken Sie dann auf die Schaltfläche \"New issue\"."
#: plinth/modules/help/templates/help_feedback.html:36
msgid "Thank you!"
@@ -2190,12 +2191,7 @@ msgid "Status Log"
msgstr "Statusprotokoll"
#: plinth/modules/help/templates/statuslog.html:13
-#, fuzzy, python-format
-#| msgid ""
-#| "These are the last %(num_lines)s lines of the status log for this web "
-#| "interface. If you want to report a bug, please use the bug tracker and "
-#| "attach this status log to the bug report."
+#, python-format
msgid ""
"These are the last %(num_lines)s lines of the status log for this web "
"interface. If you want to report a bug, please use the online Fehlerverfolger und fügen "
+"org/freedombox-team/freedombox/issues\">online Fehlerverfolger und fügen "
"diese Ausgabe hinzu."
#: plinth/modules/help/templates/statuslog.html:24
@@ -3313,7 +3309,7 @@ msgstr "Mumblefly"
#: plinth/modules/mumble/manifest.py:60
msgid "Mumla"
-msgstr ""
+msgstr "Mumla"
#: plinth/modules/mumble/views.py:29
msgid "SuperUser password successfully updated."
@@ -5651,11 +5647,7 @@ msgid "Rollback to snapshot #%(number)s"
msgstr "Zurücksetzen auf Speicherauszug #%(number)s"
#: plinth/modules/snapshot/templates/snapshot_not_supported.html:11
-#, fuzzy, python-format
-#| msgid ""
-#| "Your have a filesystem of type %(fs_type)s. Snapshots "
-#| "are currently only available on %(types_supported)s "
-#| "filesystems."
+#, python-format
msgid ""
"You have a filesystem of type %(fs_type)s. Snapshots are "
"currently only available on %(types_supported)s filesystems."
@@ -7114,11 +7106,6 @@ msgid "Requested page %(request_path)s was not found."
msgstr "Die angeforderte Seite %(request_path)s wurde nicht gefunden."
#: plinth/templates/404.html:19
-#, fuzzy
-#| msgid ""
-#| "If you believe this missing page should exist, please file a bug at the "
-#| "FreedomBox Service (Plinth) project issue tracker."
msgid ""
"If you believe this missing page should exist, please file a bug at the "
"FreedomBox Service (Plinth) project online Problemverfolger des FreedomBox "
-"(Plinth) Projektes."
+"freedombox-team/freedombox/issues\">online Problemverfolger des "
+"FreedomBox (Plinth) Projektes."
#: plinth/templates/500.html:10
msgid "500"
msgstr "500"
#: plinth/templates/500.html:14
-#, fuzzy, python-format
-#| msgid ""
-#| "This is an internal error and not something you caused or can fix. Please "
-#| "report the error on the bug tracker so we can fix it. Also, please "
-#| "attach the status log to the bug "
-#| "report."
+#, python-format
msgid ""
"This is an internal error and not something you caused or can fix. Please "
"report the error on the status log to the bug report."
msgstr ""
"Dies ist ein interner Fehler und nicht etwas, das Sie verursacht haben oder "
-"beheben können. Bitte melden Sie den Fehler im online Fehlermelder, so dass "
-"wir ihn beheben können. Fügen Sie auch das Statusprotokoll dem Fehlerbericht bei."
+"beheben können. Bitte melden Sie den Fehler im online "
+"Fehlermelder, so dass wir ihn beheben können. Fügen Sie auch das Statusprotokoll dem Fehlerbericht bei."
#: plinth/templates/app-header.html:22
msgid "Installation"
From b008697a0e187d9fcf55574043141fe36823604e Mon Sep 17 00:00:00 2001
From: Michael Breidenbach
Date: Sun, 10 May 2020 03:33:49 +0000
Subject: [PATCH 04/40] Translated using Weblate (Swedish)
Currently translated at 100.0% (1264 of 1264 strings)
---
plinth/locale/sv/LC_MESSAGES/django.po | 75 ++++++++++----------------
1 file changed, 27 insertions(+), 48 deletions(-)
diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po
index a53a5da99..ddd4d5448 100644
--- a/plinth/locale/sv/LC_MESSAGES/django.po
+++ b/plinth/locale/sv/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-05-04 19:59-0400\n"
-"PO-Revision-Date: 2020-05-02 08:11+0000\n"
+"PO-Revision-Date: 2020-05-11 10:41+0000\n"
"Last-Translator: Michael Breidenbach \n"
"Language-Team: Swedish \n"
@@ -960,20 +960,26 @@ msgid ""
"other communication servers can use it to establish a call between parties "
"who are otherwise unable connect to each other."
msgstr ""
+"Coturn är en server för att underlätta ljud- / videosamtal och konferenser "
+"genom att tillhandahålla en implementering av TURN- och STUN-protokoll. "
+"WebRTC, SIP och andra kommunikationsservrar kan använda den för att upprätta "
+"ett samtal mellan parter som annars inte kan ansluta till varandra."
#: plinth/modules/coturn/__init__.py:35
msgid ""
"It is not meant to be used directly by users. Servers such as matrix-synapse "
"need to be configured with the details provided here."
msgstr ""
+"Det är inte avsett att användas direkt av användarna. Servrar som matris-"
+"synaps måste konfigureras med de uppgifter som anges här."
#: plinth/modules/coturn/__init__.py:64
msgid "Coturn"
-msgstr ""
+msgstr "Coturn"
#: plinth/modules/coturn/__init__.py:65
msgid "VoIP Helper"
-msgstr ""
+msgstr "VoIP-hjälpare"
#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22
msgid "TLS domain"
@@ -990,12 +996,11 @@ msgstr ""
#: plinth/modules/coturn/templates/coturn.html:15
msgid "Use the following URLs to configure your communication server:"
msgstr ""
+"Använd följande webbadresser för att konfigurera din kommunikationsserver:"
#: plinth/modules/coturn/templates/coturn.html:26
-#, fuzzy
-#| msgid "The following storage devices are in use:"
msgid "Use the following shared authentication secret:"
-msgstr "Följande lagringsenheter används:"
+msgstr "Använd följande delade autentiseringshemligheter:"
#: plinth/modules/datetime/__init__.py:25
msgid ""
@@ -2045,12 +2050,6 @@ msgstr ""
"\"_blank\"> diskussionsforum."
#: plinth/modules/help/templates/help_feedback.html:26
-#, fuzzy
-#| msgid ""
-#| "If you find any bugs or issues, please use the issue "
-#| "tracker to let our developers know. To report, first check if the "
-#| "issue is already reported and then use the \"New issue\" button."
msgid ""
"If you find any bugs or issues, please use the issue "
@@ -2058,9 +2057,9 @@ msgid ""
"is already reported and then use the \"New issue\" button."
msgstr ""
"Om du hittar fel eller problem kan du använda utföra tracker att "
-"låta våra utvecklare veta. För att rapportera ska du först kontrollera om "
-"problemet redan har rapporterats och sedan använda knappen \"New issue\"."
+"org/freedombox-team/freedombox/issues\" target=\"_blank\">issue tracker "
+"att låta våra utvecklare veta. För att rapportera ska du först kontrollera "
+"om problemet redan har rapporterats och sedan använda knappen \"New issue\"."
#: plinth/modules/help/templates/help_feedback.html:36
msgid "Thank you!"
@@ -2155,12 +2154,7 @@ msgid "Status Log"
msgstr "Status Log"
#: plinth/modules/help/templates/statuslog.html:13
-#, fuzzy, python-format
-#| msgid ""
-#| "These are the last %(num_lines)s lines of the status log for this web "
-#| "interface. If you want to report a bug, please use the bug tracker and "
-#| "attach this status log to the bug report."
+#, python-format
msgid ""
"These are the last %(num_lines)s lines of the status log for this web "
"interface. If you want to report a bug, please use the bug tracker och bifoga "
-"denna statuslogg rapport bug-tracker."
+"webbgränssnitt. Om du vill rapportera ett fel, använd bug tracker "
+"och bifoga denna statuslogg rapport bug-tracker."
#: plinth/modules/help/templates/statuslog.html:24
msgid ""
@@ -3257,7 +3251,7 @@ msgstr "Mumblefly"
#: plinth/modules/mumble/manifest.py:60
msgid "Mumla"
-msgstr ""
+msgstr "Mumla"
#: plinth/modules/mumble/views.py:29
msgid "SuperUser password successfully updated."
@@ -5555,18 +5549,14 @@ msgid "Rollback to snapshot #%(number)s"
msgstr "Återställning till ögonblicksbild #%(number)s"
#: plinth/modules/snapshot/templates/snapshot_not_supported.html:11
-#, fuzzy, python-format
-#| msgid ""
-#| "Your have a filesystem of type %(fs_type)s. Snapshots "
-#| "are currently only available on %(types_supported)s "
-#| "filesystems."
+#, python-format
msgid ""
"You have a filesystem of type %(fs_type)s. Snapshots are "
"currently only available on %(types_supported)s filesystems."
msgstr ""
-"Du har ett filsystem av typen %(fs_type)s . "
-"Ögonblicksbilder är för närvarande endast tillgängliga på "
-"%(types_supported)s filsystem."
+"Du har ett filsystem av typen %(fs_type)s. Ögonblicksbilder "
+"är för närvarande endast tillgängliga på %(types_supported)s"
+" filsystem."
#: plinth/modules/snapshot/templates/snapshot_rollback.html:12
msgid "Roll back the system to this snapshot?"
@@ -6988,11 +6978,6 @@ msgid "Requested page %(request_path)s was not found."
msgstr "Begärd sida %(request_path)s hittades inte."
#: plinth/templates/404.html:19
-#, fuzzy
-#| msgid ""
-#| "If you believe this missing page should exist, please file a bug at the "
-#| "FreedomBox Service (Plinth) project issue tracker."
msgid ""
"If you believe this missing page should exist, please file a bug at the "
"FreedomBox Service (Plinth) project issue tracker."
+"freedombox-team/freedombox/issues\">issue tracker."
#: plinth/templates/500.html:10
msgid "500"
msgstr "500"
#: plinth/templates/500.html:14
-#, fuzzy, python-format
-#| msgid ""
-#| "This is an internal error and not something you caused or can fix. Please "
-#| "report the error on the bug tracker so we can fix it. Also, please "
-#| "attach the status log to the bug "
-#| "report."
+#, python-format
msgid ""
"This is an internal error and not something you caused or can fix. Please "
"report the error on the bug tracker så att vi kan fixa det. Bifoga också status logg till felrapporten."
+"freedombox/issues\">bug tracker så att vi kan fixa det. Bifoga också status logg till felrapporten."
#: plinth/templates/app-header.html:22
msgid "Installation"
From 9c4431ec1624b1e636e4b3f5448875f4fc09106f Mon Sep 17 00:00:00 2001
From: Fioddor Superconcentrado
Date: Mon, 11 May 2020 16:25:06 +0000
Subject: [PATCH 05/40] Folder remained unrenamed. Should have changed along
with git links.
---
HACKING.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/HACKING.md b/HACKING.md
index 02ddf599f..4922eb195 100644
--- a/HACKING.md
+++ b/HACKING.md
@@ -92,7 +92,7 @@ and requires about 4.5 GB of disk space.
```bash
host$ git clone https://salsa.debian.org/freedombox-team/freedombox.git
- host$ cd plinth
+ host$ cd freedombox
```
2. To download, setup, run, and configure a VM for FreedomBox development using
From 20f2ff937045ae2b79a0e191574c236aef3f566e Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Wed, 6 May 2020 14:54:30 -0700
Subject: [PATCH 06/40] snapshot: Fix issues with restore and delete
- Avoid no-response error when deleting a snapshot. This is caused when disk is
full and delete operation tries to store data in session which is stored on
disk. The session update fails and there are no values to delete. This case in
not handled and return a None in view causing a 500 error. Use GET params
instead.
- Delete all functionality that is meant to speed up deleting snapshots has
regressed and is currently never used. Further, there are more types of
snapshots that can't be deleted that needs to be handled in delete all
functionality. Drop it for now.
- When snapper list is run the snapshot number can contain '-', '+' or '*'
suffixed to it. Currently only '*' is handled. This leads to failure in listing
the snapshots after a restore snapshot'. Fix this is properly parsing. Also it
is no longer needed to query 'btrfs' command to know the snapshot that will
used at next boot. '+' or '*' means that.
- Don't list snapshot number '0'. It is never listed to the user and it can
never be deleted. It represents the current system.
- Properly implement checking for default and active snapshots. Don't let delete
operation on either of them.
- Fix regression with disabling the delete button when there are no snapshots
that can be deleted.
Tests performed:
- Before any snapshot is restored, the labels 'will be used at next boot' and
'in use' are not shown. Snapshot with number 0 is not shown.
- Immediately after restoring a snapshot, the 'will be used at next boot' label
will shown up on snapshot that is going to boot next.
- After rebooting after restore, the snapshot that has been restored will show
'will be used at next boot' and 'in use' labels. Restoring another snapshot will
move the 'will be used at next boot' label to the new restore snapshot but keep
the 'in use' label on the current snapshot until next reboot. Snapshot with
number 0 is not shown.
- Delete check boxes are not shown against the 'in use' and 'will be used at
next boot' snapshots. Entering their values manually in the URL in the delete
screen will lead them to be ignored.
- Select multiple snapshots and click delete. The details appear properly in the
confirmation window. Deleting will delete the snapshots.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
actions/snapshot | 63 +++++----------
.../templates/snapshot_delete_selected.html | 17 ++--
.../snapshot/templates/snapshot_manage.html | 64 ++++++++-------
plinth/modules/snapshot/views.py | 78 +++++++++++--------
4 files changed, 108 insertions(+), 114 deletions(-)
diff --git a/actions/snapshot b/actions/snapshot
index 538042258..f74513089 100755
--- a/actions/snapshot
+++ b/actions/snapshot
@@ -35,9 +35,6 @@ def parse_arguments():
help='Delete a snapshot by number')
subparser.add_argument('number', help='Number of snapshot to delete')
- subparser = subparsers.add_parser('delete-all',
- help='Delete all the snapshots')
-
subparser = subparsers.add_parser('set-config',
help='Configure automatic snapshots')
subparser.add_argument('config')
@@ -166,25 +163,30 @@ def _add_fstab_entry(mount_point):
aug.save()
-def _get_snapper_list():
- command = ['snapper', 'list']
- process = subprocess.run(command, stdout=subprocess.PIPE, check=True)
- return process.stdout.decode().splitlines()
+def _parse_number(number):
+ """Parse the char following the number and return status of snapshot."""
+ is_default = number[-1] in ('+', '*')
+ is_active = number[-1] in ('-', '*')
+ return number.strip('-+*'), is_default, is_active
def subcommand_list(_):
"""List snapshots."""
- lines = _get_snapper_list()
- keys = ('number', 'type', 'pre_number', 'date', 'user', 'cleanup',
- 'description')
+ process = subprocess.run(['snapper', 'list'], stdout=subprocess.PIPE,
+ check=True)
+ lines = process.stdout.decode().splitlines()
+
+ keys = ('number', 'is_default', 'is_active', 'type', 'pre_number', 'date',
+ 'user', 'cleanup', 'description')
snapshots = []
for line in lines[2:]:
- parts = [part.strip('* ') for part in line.split('|')]
- snapshots.append(dict(zip(keys, parts)))
-
- default = _get_default_snapshot()
- for snapshot in snapshots:
- snapshot['is_default'] = (snapshot['number'] == default)
+ parts = [part.strip() for part in line.split('|')]
+ parts = list(_parse_number(parts[0])) + parts[1:]
+ snapshot = dict(zip(keys, parts))
+ # Snapshot 0 always represents the current system, it need not be
+ # listed and cannot be deleted.
+ if snapshot['number'] != '0':
+ snapshots.append(snapshot)
snapshots.reverse()
print(json.dumps(snapshots))
@@ -231,35 +233,6 @@ def subcommand_delete(arguments):
subprocess.run(command, check=True)
-def subcommand_delete_all(_):
- """Delete all the snapshots (except the active one)."""
- lines = _get_snapper_list()
- snapshot_range = [line.split('|')[0].strip() for line in lines[3:]]
- default_snapshot = _get_default_snapshot()
- if snapshot_range:
- if default_snapshot:
- index = snapshot_range.index(default_snapshot)
- range_before = snapshot_range[:index]
- range_after = snapshot_range[index + 1:]
- to_delete = [range_before, range_after]
- else:
- to_delete = [snapshot_range]
-
- delete_args = filter(None, map(_get_delete_arg, to_delete))
- for arg in delete_args:
- subprocess.run(['snapper', 'delete', arg], check=True)
-
-
-def _get_delete_arg(range_list):
- """Return 'a-b' when given ['a', ..., 'b']."""
- if not range_list:
- return None
- elif len(range_list) == 1:
- return range_list[0]
- else:
- return range_list[0] + '-' + range_list[-1]
-
-
def subcommand_set_config(arguments):
command = ['snapper', 'set-config'] + arguments.config.split()
subprocess.run(command, check=True)
diff --git a/plinth/modules/snapshot/templates/snapshot_delete_selected.html b/plinth/modules/snapshot/templates/snapshot_delete_selected.html
index 2bfbab10d..929f6f4b5 100644
--- a/plinth/modules/snapshot/templates/snapshot_delete_selected.html
+++ b/plinth/modules/snapshot/templates/snapshot_delete_selected.html
@@ -19,13 +19,11 @@
{% for snapshot in snapshots %}
- {% if not snapshot.is_default %}
-
- {% if not snapshot.is_default %}
-
- {% endif %}
-
-
- {% endif %}
+
+
+ {{ snapshot.number }}
+ {% if snapshot.is_default %}
+
+ {% trans "will be used at next boot" %}
+
+ {% endif %}
+ {% if snapshot.is_active %}
+
+ {% trans "in use" %}
+
+ {% endif %}
+
+ {% if not snapshot.is_default and not snapshot.is_active %}
+
+ {% endif %}
+
+
{% endfor %}
diff --git a/plinth/modules/snapshot/views.py b/plinth/modules/snapshot/views.py
index bfe741aa2..03ee06804 100644
--- a/plinth/modules/snapshot/views.py
+++ b/plinth/modules/snapshot/views.py
@@ -4,8 +4,10 @@ Views for snapshot module.
"""
import json
+import urllib.parse
from django.contrib import messages
+from django.http import HttpResponseRedirect
from django.shortcuts import redirect
from django.template.response import TemplateResponse
from django.urls import reverse, reverse_lazy
@@ -78,15 +80,21 @@ def manage(request):
actions.superuser_run('snapshot', ['create'])
messages.success(request, _('Created snapshot.'))
if 'delete_selected' in request.POST:
- if request.POST.getlist('snapshot_list'):
- snapshot_to_delete = request.POST.getlist('snapshot_list')
- request.session['snapshots'] = snapshot_to_delete
- return redirect(reverse('snapshot:delete-selected'))
+ to_delete = request.POST.getlist('snapshot_list')
+ if to_delete:
+ # Send values using GET params instead of session variables so
+ # that snapshots can be deleted even when disk is full.
+ params = [('snapshots', number) for number in to_delete]
+ params = urllib.parse.urlencode(params)
+ url = reverse('snapshot:delete-selected')
+ return HttpResponseRedirect(f'{url}?{params}')
output = actions.superuser_run('snapshot', ['list'])
snapshots = json.loads(output)
- has_deletable_snapshots = any(
- [snapshot for snapshot in snapshots[1:] if not snapshot['is_default']])
+ has_deletable_snapshots = any([
+ snapshot for snapshot in snapshots
+ if not snapshot['is_default'] and not snapshot['is_active']
+ ])
return TemplateResponse(
request, 'snapshot_manage.html', {
@@ -100,6 +108,7 @@ def manage(request):
def update_configuration(request, old_status, new_status):
"""Update configuration of snapshots."""
+
def make_config(args):
key, stamp = args[0], args[1]
if old_status[key] != new_status[key]:
@@ -142,39 +151,44 @@ def update_configuration(request, old_status, new_status):
def delete_selected(request):
+ """View to delete selected snapshots."""
+ if request.method == 'POST':
+ to_delete = set(request.POST.getlist('snapshots'))
+ else:
+ to_delete = set(request.GET.getlist('snapshots'))
+
+ if not to_delete:
+ return redirect(reverse('snapshot:manage'))
+
output = actions.superuser_run('snapshot', ['list'])
snapshots = json.loads(output)
+ snapshots_to_delete = [
+ snapshot for snapshot in snapshots if snapshot['number'] in to_delete
+ and not snapshot['is_active'] and not snapshot['is_default']
+ ]
if request.method == 'POST':
- if 'snapshots' in request.session:
- to_delete = request.session['snapshots']
- try:
- if to_delete == len(snapshots):
- actions.superuser_run('snapshot', ['delete_all'])
- messages.success(request, _('Deleted all snapshots'))
- else:
- for snapshot in to_delete:
- actions.superuser_run('snapshot', ['delete', snapshot])
- messages.success(request, _('Deleted selected snapshots'))
- except ActionError as exception:
- if 'Config is in use.' in exception.args[2]:
- messages.error(
- request,
- _('Snapshot is currently in use. '
- 'Please try again later.'))
- else:
- raise
+ try:
+ for snapshot in snapshots_to_delete:
+ actions.superuser_run('snapshot',
+ ['delete', snapshot['number']])
- return redirect(reverse('snapshot:manage'))
+ messages.success(request, _('Deleted selected snapshots'))
+ except ActionError as exception:
+ if 'Config is in use.' in exception.args[2]:
+ messages.error(
+ request,
+ _('Snapshot is currently in use. '
+ 'Please try again later.'))
+ else:
+ raise
- if 'snapshots' in request.session:
- data = request.session['snapshots']
- to_delete = list(filter(lambda x: x['number'] in data, snapshots))
+ return redirect(reverse('snapshot:manage'))
- return TemplateResponse(request, 'snapshot_delete_selected.html', {
- 'title': _('Delete Snapshots'),
- 'snapshots': to_delete
- })
+ return TemplateResponse(request, 'snapshot_delete_selected.html', {
+ 'title': _('Delete Snapshots'),
+ 'snapshots': snapshots_to_delete
+ })
def rollback(request, number):
From c8b2cc0b8edd303bb9d6bc3b3dc235df1d208437 Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Mon, 11 May 2020 21:46:06 -0400
Subject: [PATCH 07/40] functional_tests: snapshot: Skip delete all when there
are no snapshots
Signed-off-by: James Valleroy
---
functional_tests/support/system.py | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/functional_tests/support/system.py b/functional_tests/support/system.py
index 82105af31..20e79e243 100644
--- a/functional_tests/support/system.py
+++ b/functional_tests/support/system.py
@@ -85,13 +85,13 @@ def check_language(browser, language_code):
def delete_all_snapshots(browser):
- browser.visit(config['DEFAULT']['url'] + '/plinth/sys/snapshot/manage/')
- browser.find_by_id('select-all').check()
+ if get_snapshot_count(browser):
+ browser.find_by_id('select-all').check()
+ submit(browser, browser.find_by_name('delete_selected'))
- submit(browser, browser.find_by_name('delete_selected'))
- confirm_button = browser.find_by_name('delete_confirm')
- if confirm_button: # Only if redirected to confirm page
- submit(browser, confirm_button)
+ confirm_button = browser.find_by_name('delete_confirm')
+ if confirm_button: # Only if redirected to confirm page
+ submit(browser, confirm_button)
def create_snapshot(browser):
From c624538788a0c6536e4fdb9721b2ac7633c61a22 Mon Sep 17 00:00:00 2001
From: Joseph Nuthalapati
Date: Tue, 12 May 2020 07:50:10 +0530
Subject: [PATCH 08/40] samba: Change description to Network File Storage
Discussion on the forum:
https://discuss.freedombox.org/t/what-is-samba-app/699
Signed-off-by: Joseph Nuthalapati
Reviewed-by: Sunil Mohan Adapa
---
plinth/modules/samba/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plinth/modules/samba/__init__.py b/plinth/modules/samba/__init__.py
index e6f9376af..33f474e42 100644
--- a/plinth/modules/samba/__init__.py
+++ b/plinth/modules/samba/__init__.py
@@ -60,7 +60,7 @@ class SambaApp(app_module.App):
info = app_module.Info(app_id=self.app_id, version=version,
name=_('Samba'), icon_filename='samba',
- short_description=_('File Sharing'),
+ short_description=_('Network File Storage'),
manual_page='Samba', description=_description,
clients=clients)
self.add(info)
From e465645594ae4d5976a06a8d7faab0fac01669f3 Mon Sep 17 00:00:00 2001
From: fred1m
Date: Sun, 3 May 2020 16:17:33 +0200
Subject: [PATCH 09/40] performance: Add app for system monitoring
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Using cockpit-pcp in ‘System’ section.
Signed-off-by: fred1m
[sunil: Minor grammar fix in description, minor styling]
[sunil: Drop the icon completely in favor of just the font icon]
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: Sunil Mohan Adapa
---
plinth/modules/performance/__init__.py | 86 +++++++++++++++++++
.../etc/plinth/modules-enabled/performance | 1 +
.../access.d/10freedombox-performance.conf | 1 +
plinth/modules/performance/manifest.py | 15 ++++
plinth/modules/performance/tests/__init__.py | 0
plinth/modules/performance/urls.py | 13 +++
6 files changed, 116 insertions(+)
create mode 100644 plinth/modules/performance/__init__.py
create mode 100644 plinth/modules/performance/data/etc/plinth/modules-enabled/performance
create mode 100644 plinth/modules/performance/data/etc/security/access.d/10freedombox-performance.conf
create mode 100644 plinth/modules/performance/manifest.py
create mode 100644 plinth/modules/performance/tests/__init__.py
create mode 100644 plinth/modules/performance/urls.py
diff --git a/plinth/modules/performance/__init__.py b/plinth/modules/performance/__init__.py
new file mode 100644
index 000000000..260171084
--- /dev/null
+++ b/plinth/modules/performance/__init__.py
@@ -0,0 +1,86 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+FreedomBox app for System Monitoring (cockpit-pcp) in ‘System’.
+"""
+
+from django.utils.translation import ugettext_lazy as _
+
+from plinth import app as app_module
+from plinth import menu
+from plinth.daemon import Daemon
+
+from .manifest import clients
+
+version = 1
+
+name = _('Performance')
+
+managed_services = [
+ 'pmcd.service', 'pmie.service', 'pmlogger.service', 'pmproxy.service'
+]
+
+managed_packages = ['cockpit-pcp']
+
+_description = [
+ ('Performance app allows you to collect, store and view information about '
+ 'utilization of the hardware. This can give you basic insights into '
+ 'usage patterns and whether the hardware is overloaded by users and '
+ 'services.'),
+ ('Performance metrics are collected by Performance Co-Pilot and can be '
+ 'viewed using the Cockpit app.'),
+]
+
+app = None
+
+
+class PerformanceApp(app_module.App):
+ """FreedomBox app for Performance."""
+
+ app_id = 'performance'
+
+ def __init__(self):
+ """Create components for the app."""
+ super().__init__()
+ info = app_module.Info(app_id=self.app_id, version=version,
+ name=_('Performance'), icon='fa-bar-chart',
+ short_description=_('System Monitoring'),
+ description=_description,
+ manual_page='Performance', clients=clients)
+ self.add(info)
+
+ menu_item = menu.Menu('menu-performance', info.name,
+ info.short_description, info.icon,
+ 'performance:index', parent_url_name='system')
+ self.add(menu_item)
+
+ daemon_0 = Daemon('daemon-performance-0', managed_services[0],
+ listen_ports=None)
+ self.add(daemon_0)
+
+ daemon_1 = Daemon('daemon-performance-1', managed_services[1],
+ listen_ports=None)
+ self.add(daemon_1)
+
+ daemon_2 = Daemon('daemon-performance-2', managed_services[2],
+ listen_ports=None)
+ self.add(daemon_2)
+
+ daemon_3 = Daemon('daemon-performance-3', managed_services[3],
+ listen_ports=None)
+ self.add(daemon_3)
+
+
+def init():
+ """Initialize the Performance module."""
+ global app
+ app = PerformanceApp()
+
+ setup_helper = globals()['setup_helper']
+ if setup_helper.get_state() != 'needs-setup' and app.is_enabled():
+ app.set_enabled(True)
+
+
+def setup(helper, old_version=None):
+ """Install and configure the module."""
+ helper.install(managed_packages)
+ helper.call('post', app.enable)
diff --git a/plinth/modules/performance/data/etc/plinth/modules-enabled/performance b/plinth/modules/performance/data/etc/plinth/modules-enabled/performance
new file mode 100644
index 000000000..14c84862a
--- /dev/null
+++ b/plinth/modules/performance/data/etc/plinth/modules-enabled/performance
@@ -0,0 +1 @@
+plinth.modules.performance
diff --git a/plinth/modules/performance/data/etc/security/access.d/10freedombox-performance.conf b/plinth/modules/performance/data/etc/security/access.d/10freedombox-performance.conf
new file mode 100644
index 000000000..cbc66d077
--- /dev/null
+++ b/plinth/modules/performance/data/etc/security/access.d/10freedombox-performance.conf
@@ -0,0 +1 @@
++:pcp:cron
diff --git a/plinth/modules/performance/manifest.py b/plinth/modules/performance/manifest.py
new file mode 100644
index 000000000..4d0c87e6d
--- /dev/null
+++ b/plinth/modules/performance/manifest.py
@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+FreedomBox app for System Monitoring (cockpit-pcp) in ‘System’.
+"""
+
+from django.utils.translation import ugettext_lazy as _
+from plinth.clients import validate
+
+clients = validate([{
+ 'name': _('Cockpit'),
+ 'platforms': [{
+ 'type': 'web',
+ 'url': '/_cockpit/'
+ }]
+}])
diff --git a/plinth/modules/performance/tests/__init__.py b/plinth/modules/performance/tests/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/plinth/modules/performance/urls.py b/plinth/modules/performance/urls.py
new file mode 100644
index 000000000..06920625d
--- /dev/null
+++ b/plinth/modules/performance/urls.py
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+FreedomBox app for System Monitoring (cockpit-pcp) in ‘System’.
+"""
+
+from django.conf.urls import url
+
+from plinth.views import AppView
+
+urlpatterns = [
+ url(r'^sys/performance/$', AppView.as_view(app_id='performance'),
+ name='index'),
+]
From 7f7b5b4e675fa163f070bc13be6bb192187beb1d Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Mon, 11 May 2020 22:26:45 -0700
Subject: [PATCH 10/40] performance: Add basic functional tests
Signed-off-by: Sunil Mohan Adapa
---
functional_tests/features/performance.feature | 20 +++++++++++++++++++
functional_tests/support/interface.py | 4 ++--
2 files changed, 22 insertions(+), 2 deletions(-)
create mode 100644 functional_tests/features/performance.feature
diff --git a/functional_tests/features/performance.feature b/functional_tests/features/performance.feature
new file mode 100644
index 000000000..cbae2c492
--- /dev/null
+++ b/functional_tests/features/performance.feature
@@ -0,0 +1,20 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+@system @performance
+Feature: Performance - system monitoring
+ Run the Performance Co-Pilot app.
+
+Background:
+ Given I'm a logged in user
+ And advanced mode is on
+ And the performance application is installed
+
+Scenario: Enable performance application
+ Given the performance application is disabled
+ When I enable the performance application
+ Then the performance service should be running
+
+Scenario: Disable performance application
+ Given the performance application is enabled
+ When I disable the performance application
+ Then the performance service should not be running
diff --git a/functional_tests/support/interface.py b/functional_tests/support/interface.py
index c9a4f23d9..fb8af4c28 100644
--- a/functional_tests/support/interface.py
+++ b/functional_tests/support/interface.py
@@ -13,8 +13,8 @@ from .service import wait_for_page_update
sys_modules = [
'avahi', 'backups', 'bind', 'cockpit', 'config', 'datetime', 'diagnostics',
'dynamicdns', 'firewall', 'letsencrypt', 'monkeysphere', 'names',
- 'networks', 'pagekite', 'power', 'security', 'snapshot', 'ssh', 'storage',
- 'upgrades', 'users'
+ 'networks', 'pagekite', 'performance', 'power', 'security', 'snapshot',
+ 'ssh', 'storage', 'upgrades', 'users'
]
default_url = config['DEFAULT']['url']
From 6d2f4b6cea368e51c5e996222b8df4380f18da6f Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Thu, 7 May 2020 20:15:50 -0700
Subject: [PATCH 11/40] daemon: Allow using an alias when enabling a daemon
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/daemon.py | 16 +++++++++++++++-
plinth/tests/test_daemon.py | 12 +++++++++++-
2 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/plinth/daemon.py b/plinth/daemon.py
index 4644d17b2..3b80d8a2a 100644
--- a/plinth/daemon.py
+++ b/plinth/daemon.py
@@ -15,7 +15,7 @@ from plinth import action_utils, actions, app
class Daemon(app.LeaderComponent):
"""Component to manage a background daemon or any systemd unit."""
def __init__(self, component_id, unit, strict_check=False,
- listen_ports=None):
+ listen_ports=None, alias=None):
"""Initialize a new daemon component.
'component_id' must be a unique string across all apps and components
@@ -28,12 +28,24 @@ class Daemon(app.LeaderComponent):
'tcp', 'udp4', 'udp6', 'udp' indicating the protocol that the daemon
listens on. This information is used to run diagnostic tests.
+ 'alias' is an alternate name for the same unit file. When a unit file
+ is renamed, the new unit file usually contains an Alias= setting in
+ [Install] section with value of old unit name. When the unit is
+ enabled, a symlink with the name of the alias is created. All
+ operations such as is-enabled, is-running and disable work with the
+ alias along with the primary unit name. However, for the case of
+ enabling the unit file, the alias does not work. To be able to provide
+ management for multiple versions of the unit file with different names,
+ specify an alias. Both the names are taken into consideration when
+ enabling the unit file.
+
"""
super().__init__(component_id)
self.unit = unit
self.strict_check = strict_check
self.listen_ports = listen_ports or []
+ self.alias = alias
def is_enabled(self):
"""Return if the daemon/unit is enabled."""
@@ -43,6 +55,8 @@ class Daemon(app.LeaderComponent):
def enable(self):
"""Run operations to enable the daemon/unit."""
actions.superuser_run('service', ['enable', self.unit])
+ if self.alias:
+ actions.superuser_run('service', ['enable', self.alias])
def disable(self):
"""Run operations to disable the daemon/unit."""
diff --git a/plinth/tests/test_daemon.py b/plinth/tests/test_daemon.py
index e9e49edbc..8fc1018eb 100644
--- a/plinth/tests/test_daemon.py
+++ b/plinth/tests/test_daemon.py
@@ -29,12 +29,14 @@ def test_initialization():
assert daemon.unit == 'test-unit'
assert not daemon.strict_check
assert daemon.listen_ports == []
+ assert daemon.alias is None
listen_ports = [(345, 'tcp4'), (123, 'udp')]
daemon = Daemon('test-daemon', 'test-unit', strict_check=True,
- listen_ports=listen_ports)
+ listen_ports=listen_ports, alias='test-unit-2')
assert daemon.strict_check
assert daemon.listen_ports == listen_ports
+ assert daemon.alias == 'test-unit-2'
@patch('plinth.action_utils.service_is_enabled')
@@ -60,6 +62,13 @@ def test_enable(superuser_run, daemon):
daemon.enable()
superuser_run.assert_has_calls([call('service', ['enable', 'test-unit'])])
+ daemon.alias = 'test-unit-2'
+ daemon.enable()
+ superuser_run.assert_has_calls([
+ call('service', ['enable', 'test-unit']),
+ call('service', ['enable', 'test-unit-2'])
+ ])
+
@patch('plinth.actions.superuser_run')
def test_disable(superuser_run, daemon):
@@ -83,6 +92,7 @@ def test_is_running(service_is_running, daemon):
@patch('plinth.daemon.diagnose_port_listening')
def test_diagnose(port_listening, service_is_running, daemon):
"""Test running diagnostics."""
+
def side_effect(port, kind):
return [f'test-result-{port}-{kind}', 'passed']
From e3228467f3ed321d0e4ec2f74c2fc13635d224e8 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Thu, 7 May 2020 20:23:32 -0700
Subject: [PATCH 12/40] bind: Add daemon alias for bind9 -> named
bind9 package version 1:9.16.1-2 in unstable renamed bind9.service to
named.service. The new service file contains Alias=bind9.service. Use this
support multiple versions of the package across Debian stable, testing and
unstable.
Closes: #1816.
Tests performed:
- Enable the service. 'service enable bind9' is called but fails with error
ignored. 'service enable named' is also called but succeeds. Running 'service
is-enable bind9' and 'service is-enabled named' return success. App page show
enabled, there are no errors on the page.
- When app is enabled, there is no message that service is not running.
- When diagnostics are run, it shows that bind9 service is running.
- Disable the app. 'service disable bind9' is called. Running 'service is-enable
bind9' and 'service is-enabled named' return errors. App page shows disabled,
there are no errors.
- Repeat tests on Debian stable.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/bind/__init__.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/plinth/modules/bind/__init__.py b/plinth/modules/bind/__init__.py
index 850cbb353..e20979da1 100644
--- a/plinth/modules/bind/__init__.py
+++ b/plinth/modules/bind/__init__.py
@@ -21,7 +21,7 @@ from .manifest import backup # noqa, pylint: disable=unused-import
version = 2
-managed_services = ['bind9']
+managed_services = ['bind9', 'named']
managed_packages = ['bind9']
@@ -97,7 +97,8 @@ class BindApp(app_module.App):
'daemon-bind', managed_services[0], listen_ports=[(53, 'tcp6'),
(53, 'udp6'),
(53, 'tcp4'),
- (53, 'udp4')])
+ (53, 'udp4')],
+ alias=managed_services[1])
self.add(daemon)
From b763391dfb82bf9a8be66a46707cf0b725aef4fc Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Thu, 7 May 2020 20:26:57 -0700
Subject: [PATCH 13/40] daemon: bind: cosmetic: yapf, isort formatting
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/daemon.py | 1 +
plinth/modules/bind/__init__.py | 16 +++++++---------
2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/plinth/daemon.py b/plinth/daemon.py
index 3b80d8a2a..eb64eba3b 100644
--- a/plinth/daemon.py
+++ b/plinth/daemon.py
@@ -14,6 +14,7 @@ from plinth import action_utils, actions, app
class Daemon(app.LeaderComponent):
"""Component to manage a background daemon or any systemd unit."""
+
def __init__(self, component_id, unit, strict_check=False,
listen_ports=None, alias=None):
"""Initialize a new daemon component.
diff --git a/plinth/modules/bind/__init__.py b/plinth/modules/bind/__init__.py
index e20979da1..80f0dc70e 100644
--- a/plinth/modules/bind/__init__.py
+++ b/plinth/modules/bind/__init__.py
@@ -3,11 +3,11 @@
FreedomBox app to configure BIND server.
"""
-import augeas
import re
from collections import defaultdict
from pathlib import Path
+import augeas
from django.utils.translation import ugettext_lazy as _
from plinth import actions
@@ -233,8 +233,8 @@ def get_served_domains():
:return: dictionary in the form 'domain_name': ['ip_address', 'ipv6_addr']
"""
RECORD_TYPES = ('A', 'AAAA')
- aug = augeas.Augeas(
- flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD)
+ aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD +
+ augeas.Augeas.NO_MODL_AUTOLOAD)
aug.set('/augeas/load/Dns_Zone/lens', 'Dns_Zone.lns')
zone_file_path = Path(ZONES_DIR)
@@ -252,8 +252,8 @@ def get_served_domains():
count = 1
mname = aug.get(base_path.format(record_order=count, field='mname'))
while True:
- record_type = aug.get(base_path.format(record_order=count,
- field='type'))
+ record_type = aug.get(
+ base_path.format(record_order=count, field='type'))
# no record type ends the search
if record_type is None:
@@ -261,10 +261,8 @@ def get_served_domains():
if record_type in RECORD_TYPES:
served_domains[mname].append(
- aug.get(base_path.format(
- record_order=count, field='rdata')
- )
- )
+ aug.get(base_path.format(record_order=count,
+ field='rdata')))
count += 1
From 55f4573e93986aad97b0f0432cf8bb4ee4ee33a9 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Thu, 7 May 2020 15:21:35 -0700
Subject: [PATCH 14/40] firewall: Reload firewalld so it works with newly
installed services
firewalld has no problem retrieving service information for just-installed
files, it only fails when adding/removing those services to zones. A reload is
needed before those services can be used.
Don't perform firewalld reload during setup.py or debian/postinst. Instead
reload when firewalld throws an error that it does not know a service. This
approach is more minimally intrusive and does not run reload operations when no
services need to be loaded, during Debian package building etc.
Closes: #376.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/firewall/__init__.py | 39 +++++++++++++++++++++++++++
plinth/modules/firewall/components.py | 6 +++++
2 files changed, 45 insertions(+)
diff --git a/plinth/modules/firewall/__init__.py b/plinth/modules/firewall/__init__.py
index 1cbc30bd0..5ab04d8d7 100644
--- a/plinth/modules/firewall/__init__.py
+++ b/plinth/modules/firewall/__init__.py
@@ -142,6 +142,45 @@ def ignore_dbus_error(dbus_error=None, service_error=None):
raise
+def parse_dbus_error(exception):
+ """Parse a GDBus error."""
+ parts = exception.message.split(':')
+ if parts[0] != 'GDBus.Error' or \
+ parts[1] != 'org.fedoraproject.FirewallD1.Exception':
+ return None
+
+ return parts[2].strip()
+
+
+def reload():
+ """Reload firewalld."""
+ logger.info('Reloading firewalld')
+ with ignore_dbus_error(dbus_error='ServiceUnknown'):
+ proxy = _get_dbus_proxy(_FIREWALLD_OBJECT, _FIREWALLD_INTERFACE)
+ proxy.reload()
+
+
+def try_with_reload(operation):
+ """Try an operation and retry after firewalld reload.
+
+ When a service file is newly installed into /usr/lib/firewalld/services,
+ it's information can be immediately queried but the service can't be
+ added/removed from a zone. A firewalld reload is necessary. So, try an
+ operation and if it fails with INVALID_SERVICE error, reload firewalld and
+ try again.
+
+ """
+ try:
+ operation()
+ except glib.Error as exception:
+ error = parse_dbus_error(exception)
+ if error != 'INVALID_SERVICE':
+ raise
+
+ reload()
+ operation()
+
+
def get_enabled_status():
"""Return whether firewall is enabled"""
output = _run(['get-status'], superuser=True)
diff --git a/plinth/modules/firewall/components.py b/plinth/modules/firewall/components.py
index 9d2b5baf5..29b450bf8 100644
--- a/plinth/modules/firewall/components.py
+++ b/plinth/modules/firewall/components.py
@@ -51,7 +51,10 @@ class Firewall(app.FollowerComponent):
def enable(self):
"""Open firewall ports when the component is enabled."""
super().enable()
+ firewall.try_with_reload(self._enable)
+ def _enable(self):
+ """Open firewall ports."""
internal_enabled_ports = firewall.get_enabled_services(zone='internal')
external_enabled_ports = firewall.get_enabled_services(zone='external')
@@ -66,7 +69,10 @@ class Firewall(app.FollowerComponent):
def disable(self):
"""Close firewall ports when the component is disabled."""
super().disable()
+ firewall.try_with_reload(self._disable)
+ def _disable(self):
+ """Close firewall ports."""
internal_enabled_ports = firewall.get_enabled_services(zone='internal')
external_enabled_ports = firewall.get_enabled_services(zone='external')
From adc1c67e12f12f211a0812e3b465a23fcf43218d Mon Sep 17 00:00:00 2001
From: Joseph Nuthalapati
Date: Fri, 28 Feb 2020 11:44:40 +0530
Subject: [PATCH 15/40] functional-tests: Skip network setup wizard
Fixes #1781
Signed-off-by: Joseph Nuthalapati
[sunil: Update to work with latest code]
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: Sunil Mohan Adapa
---
functional_tests/support/interface.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/functional_tests/support/interface.py b/functional_tests/support/interface.py
index fb8af4c28..19dfa38d0 100644
--- a/functional_tests/support/interface.py
+++ b/functional_tests/support/interface.py
@@ -41,6 +41,11 @@ def login(browser, url, username, password):
browser.visit(default_url + '/plinth/firstboot/welcome')
submit(browser) # click the "Start Setup" button
create_admin_account(browser, username, password)
+ if '/network-topology-first-boot' in browser.url:
+ submit(browser, element=browser.find_by_name('skip')[0])
+
+ if '/internet-connection-type' in browser.url:
+ submit(browser, element=browser.find_by_name('skip')[0])
def is_login_prompt(browser):
From 8b721a27efdd6e91f6d38bc5bf53129456a63f60 Mon Sep 17 00:00:00 2001
From: Joseph Nuthalapati
Date: Fri, 7 Feb 2020 11:22:24 +0530
Subject: [PATCH 16/40] functional-tests: Move Disable tests to the end
Disabling an application at the end of test suite frees us system
resources for the remaining applications.
Signed-off-by: Joseph Nuthalapati
Reviewed-by: Sunil Mohan Adapa
---
functional_tests/features/gitweb.feature | 10 +++++-----
functional_tests/features/samba.feature | 10 +++++-----
functional_tests/features/searx.feature | 9 ++++-----
functional_tests/features/upgrades.feature | 16 ++++++++--------
4 files changed, 22 insertions(+), 23 deletions(-)
diff --git a/functional_tests/features/gitweb.feature b/functional_tests/features/gitweb.feature
index 833a69fde..5f3be943b 100644
--- a/functional_tests/features/gitweb.feature
+++ b/functional_tests/features/gitweb.feature
@@ -42,11 +42,6 @@ Scenario: Backup and restore gitweb
Then the repository should be restored
And the gitweb site should be available
-Scenario: Disable gitweb application
- Given the gitweb application is enabled
- When I disable the gitweb application
- Then the gitweb site should not be available
-
Scenario: Public gitweb site shows only public repositories
Given the gitweb application is enabled
And both public and private repositories exist
@@ -90,3 +85,8 @@ Scenario: Access private repository with git client
And the repository should not be publicly writable
And the repository should be privately readable
And the repository should be privately writable
+
+Scenario: Disable gitweb application
+ Given the gitweb application is enabled
+ When I disable the gitweb application
+ Then the gitweb site should not be available
diff --git a/functional_tests/features/samba.feature b/functional_tests/features/samba.feature
index 9ff767d47..1b5aaf7b9 100644
--- a/functional_tests/features/samba.feature
+++ b/functional_tests/features/samba.feature
@@ -14,11 +14,6 @@ Scenario: Enable samba application
When I enable the samba application
Then the samba service should be running
-Scenario: Disable samba application
- Given the samba application is enabled
- When I disable the samba application
- Then the samba service should not be running
-
Scenario: Enable open samba share
Given the samba application is enabled
When I enable the open samba share
@@ -50,3 +45,8 @@ Scenario: Backup and restore samba
And I restore the samba app data backup
Then the samba service should be running
And I can write to the home samba share
+
+Scenario: Disable samba application
+ Given the samba application is enabled
+ When I disable the samba application
+ Then the samba service should not be running
diff --git a/functional_tests/features/searx.feature b/functional_tests/features/searx.feature
index ca95cbac1..735981ada 100644
--- a/functional_tests/features/searx.feature
+++ b/functional_tests/features/searx.feature
@@ -19,11 +19,6 @@ Scenario: Backup and restore searx
And I restore the searx app data backup
Then the searx site should be available
-Scenario: Disable searx application
- Given the searx application is enabled
- When I disable the searx application
- Then the searx site should not be available
-
Scenario: Enable public access
Given the searx application is enabled
When I enable public access in searx
@@ -47,3 +42,7 @@ Scenario: Preserve public access setting
Then searx app should be visible on the front page
And the searx site should be available
+Scenario: Disable searx application
+ Given the searx application is enabled
+ When I disable the searx application
+ Then the searx site should not be available
diff --git a/functional_tests/features/upgrades.feature b/functional_tests/features/upgrades.feature
index f46c0ea1f..ff8551c3c 100644
--- a/functional_tests/features/upgrades.feature
+++ b/functional_tests/features/upgrades.feature
@@ -7,10 +7,10 @@ Feature: Software Upgrades
Background:
Given I'm a logged in user
-Scenario: Disable automatic upgrades
- Given automatic upgrades are enabled
- When I disable automatic upgrades
- Then automatic upgrades should be disabled
+Scenario: Enable automatic upgrades
+ Given automatic upgrades are disabled
+ When I enable automatic upgrades
+ Then automatic upgrades should be enabled
Scenario: Backup and restore upgrades
When I enable automatic upgrades
@@ -19,7 +19,7 @@ Scenario: Backup and restore upgrades
And I restore the upgrades app data backup
Then automatic upgrades should be enabled
-Scenario: Enable automatic upgrades
- Given automatic upgrades are disabled
- When I enable automatic upgrades
- Then automatic upgrades should be enabled
+Scenario: Disable automatic upgrades
+ Given automatic upgrades are enabled
+ When I disable automatic upgrades
+ Then automatic upgrades should be disabled
From 6216f7872c72c058fc3c4c5daac69481126086a6 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Mon, 6 Apr 2020 20:12:34 -0700
Subject: [PATCH 17/40] glib: Allow scheduling non-repeating tasks in separate
threads
Signed-off-by: Sunil Mohan Adapa
---
plinth/glib.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/plinth/glib.py b/plinth/glib.py
index dc535defe..85a48c872 100644
--- a/plinth/glib.py
+++ b/plinth/glib.py
@@ -47,8 +47,9 @@ def _run():
logger.info('Glib main loop thread exited.')
-def schedule(interval, method, data=None, in_thread=True):
+def schedule(interval, method, data=None, in_thread=True, repeat=True):
"""Schedule a recurring call to a method with fixed interval."""
+
def _runner():
"""Run the target method and log and exceptions."""
try:
@@ -64,6 +65,6 @@ def schedule(interval, method, data=None, in_thread=True):
thread = threading.Thread(target=_runner)
thread.start()
- return True
+ return repeat
glib.timeout_add(int(interval * 1000), _run_bare_or_thread, None)
From b3663075a0821f27c95e652ca691304abfc89f5a Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Mon, 6 Apr 2020 20:13:18 -0700
Subject: [PATCH 18/40] notification: Expand and clarify restriction on id
property
- This is to allow arbitrary strings to be part of id property via base32
encoding.
Signed-off-by: Sunil Mohan Adapa
---
plinth/notification.py | 5 ++++-
plinth/urls.py | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/plinth/notification.py b/plinth/notification.py
index 89140b86e..26c9c5858 100644
--- a/plinth/notification.py
+++ b/plinth/notification.py
@@ -70,7 +70,9 @@ class Notification(models.StoredNotification):
following fields are present in the model:
'id' is a unique string identifier for the notification and acts as the
- primary key for the stored database table.
+ primary key for the stored database table. Only the following chars are
+ currently allowed: A-Z, a-z, 0-9, - and =. If other chars must be used, it
+ is recommended to use base32 encoding.
'app_id' is the unique ID of the app showing the notification.
@@ -154,6 +156,7 @@ class Notification(models.StoredNotification):
been dismissed by the user.
"""
+
class Meta: # pylint: disable=too-few-public-methods
"""Meta properties of the Notification model."""
proxy = True
diff --git a/plinth/urls.py b/plinth/urls.py
index 8d69881ed..5317ef32c 100644
--- a/plinth/urls.py
+++ b/plinth/urls.py
@@ -32,6 +32,6 @@ urlpatterns = [
url(r'locked/$', public(CaptchaLoginView.as_view()), name='locked_out'),
# Notifications
- url(r'^notification/(?P[a-z0-9-]+)/dismiss/$',
+ url(r'^notification/(?P[A-Za-z0-9-=]+)/dismiss/$',
views.notification_dismiss, name='notification_dismiss')
]
From e51d027618466784ddecd16fd450afb5c0db96b9 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Mon, 6 Apr 2020 20:04:15 -0700
Subject: [PATCH 19/40] storage: Auto-mount disks, notify of failing disks
- Remove freedombox-udiskie.service file. Don't run udiskie anymore. Use our own
implementation of auto-mounting.
- Schedule disk failure checking to 3 seconds after application initialization.
Also perform auto-mounting at that time.
- Listen to new filesystems added and auto-mount them.
- Listen to disk failing attribute and report to user via a notification.
- Add rules to polkit-1 to allow plinth user to mount drives.
- Add simple abstractions over DBusProxy objects make accessing properties
simpler.
- Replicate udiskie's approach to mounting disks.
- Mount as root user for now using command line instead of DBus API. This is to
keep compatibility with older code that mounted under /media/root with relaxed
permissions.
Udiskie analysis:
- On device added, media added, perform auto_add
- On device changed and is addable and old state is not addable or removeable
- Automount condition:
- Matches configuration
- Not ignored
- is_filesystem and not mounted -> mount
- crypto device -> try unlock -> if success, mount
- is partition table
- Get all non-ignored devices, if partition then mount
- Mount condition:
- Is not ignored
- Is filesystem
- Find device with path
- Get options from configuration
- Is ntfs and executable ntfs-3g is not available
- Call mount
- No support for udisks1
- Built-in rules
- {'symlinks': '/dev/mapper/docker-*', 'ignore': True}
- {'symlinks': '/dev/disk/by-id/dm-name-docker-*', 'ignore': True}
- {'is_loop': True, 'is_ignored': False, 'loop_file': '/*', 'ignore': False}
- {'is_block': False, 'ignore': True}
- {'is_external': False, 'is_toplevel': True, 'ignore': True}
- {'is_ignored': True, 'ignore': True}
Tests performed:
- Create a CDROM in VM, inject media. Disk should get mounted.
- Create a temp file. mkfs.ext4 it at top level. losetup it. It should not get
auto mounted as it is a top level internal device.
- Create a temp file. Create two partitions and format the partitions. kpartx
-a on it. Both the file systems should get mounted.
- Create a temp file. luksformat it. Create a filesystem. luksopen the file.
It should get auto mounted.
- Checking for disk space repeatedly happens every 3 minutes.
- Drives are checked for healthy status only once, 3 seconds after FreedomBox is started.
- FreedomBox is able to mount disks while running as 'plinth' user with
policykit-1 version 0.105-26.
- FreedomBox is able to mount disks while running as 'plinth' user with
policykit-1 version 0.116-2 from experimental.
- Temporarily flip the is_failing condition in report_failing_drive. When
FreedomBox is restarted, notification about drives failing show up. When the
condition is reverted to normal, the notification is withdrawn.
- Build new Debian package and upgrade system with 20.8 installed. Two files
should be removed:
/var/lib/systemd/deb-systemd-helper-enabled/freedombox-udiskie.service.dsh-also
/etc/systemd/system/multi-user.target.wants/freedombox-udiskie.service .
systemctl status freedombox-udiskie.service should report no such unit.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: Veiko Aasa
---
actions/storage | 24 ++
debian/freedombox.preinst | 16 +
plinth/modules/storage/__init__.py | 32 +-
.../systemd/system/freedombox-udiskie.service | 22 --
.../rules.d/50-freedombox-udisks2.rules | 18 +
.../10-vendor.d/org.freedombox.UDisks2.pkla | 4 +
plinth/modules/storage/udisks2.py | 340 ++++++++++++++++++
7 files changed, 427 insertions(+), 29 deletions(-)
delete mode 100644 plinth/modules/storage/data/lib/systemd/system/freedombox-udiskie.service
create mode 100644 plinth/modules/storage/data/usr/share/polkit-1/rules.d/50-freedombox-udisks2.rules
create mode 100644 plinth/modules/storage/data/var/lib/polkit-1/localauthority/10-vendor.d/org.freedombox.UDisks2.pkla
create mode 100644 plinth/modules/storage/udisks2.py
diff --git a/actions/storage b/actions/storage
index 508dc6d11..6d5b97602 100755
--- a/actions/storage
+++ b/actions/storage
@@ -34,6 +34,10 @@ def parse_arguments():
subparser.add_argument('device',
help='Partition which needs to be resized')
+ subparser = subparsers.add_parser('mount', help='Mount a filesystem')
+ subparser.add_argument('--block-device',
+ help='Block device of the filesystem to mount')
+
subparser = subparsers.add_parser('eject', help='Eject a storage device')
subparser.add_argument('device', help='Path of the device to eject')
@@ -232,6 +236,26 @@ def _interpret_unit(value):
return int(value)
+def subcommand_mount(arguments):
+ """Mount a disk are root user.
+
+ XXX: This is primarily to provide compatibility with older code that used
+ udiskie to auto-mount all partitions as root user under /media/root/
+ directory. We are setting special permissions for the directory /media/root
+ and users have set shared folders using this path. This can be removed in
+ favor of using DBus API once we have a migration plan in place. Disks can
+ be mounted directly /mount without ACL restrictions that apply to
+ /mount/ directories. This can be done by setting udev flag
+ UDISKS_FILESYSTEM_SHARED=1 by writing a udev rule.
+
+ """
+ process = subprocess.run([
+ 'udisksctl', 'mount', '--block-device', arguments.block_device,
+ '--no-user-interaction'
+ ])
+ sys.exit(process.returncode)
+
+
def subcommand_eject(arguments):
"""Eject a device by its path."""
device_path = arguments.device
diff --git a/debian/freedombox.preinst b/debian/freedombox.preinst
index c10163861..0f04c2681 100755
--- a/debian/freedombox.preinst
+++ b/debian/freedombox.preinst
@@ -19,6 +19,22 @@ case "$1" in
systemctl daemon-reload
fi
fi
+
+ # Handle removing freedombox-udiskie.service from 20.9.
+ if dpkg --compare-versions "$2" le 20.9; then
+ if [ -x "/usr/bin/deb-systemd-invoke" ]; then
+ deb-systemd-invoke stop freedombox-udiskie.service >/dev/null 2>/dev/null || true
+ fi
+
+ if [ -x "/usr/bin/deb-systemd-helper" ]; then
+ deb-systemd-helper purge freedombox-udiskie.service >/dev/null || true
+ deb-systemd-helper unmask freedombox-udiskie.service >/dev/null || true
+ fi
+
+ if [ -d /run/systemd/system ]; then
+ systemctl daemon-reload
+ fi
+ fi
;;
esac
diff --git a/plinth/modules/storage/__init__.py b/plinth/modules/storage/__init__.py
index 7b6fc7651..f7c2ba935 100644
--- a/plinth/modules/storage/__init__.py
+++ b/plinth/modules/storage/__init__.py
@@ -3,6 +3,7 @@
FreedomBox app to manage storage.
"""
+import base64
import logging
import subprocess
@@ -13,17 +14,15 @@ from django.utils.translation import ugettext_noop
from plinth import actions
from plinth import app as app_module
from plinth import cfg, glib, menu, utils
-from plinth.daemon import Daemon
from plinth.errors import ActionError, PlinthError
from plinth.utils import format_lazy, import_from_gi
+from . import udisks2
from .manifest import backup # noqa, pylint: disable=unused-import
version = 4
-managed_services = ['freedombox-udiskie']
-
-managed_packages = ['parted', 'udiskie', 'gir1.2-udisks-2.0']
+managed_packages = ['parted', 'udisks2', 'gir1.2-udisks-2.0']
_description = [
format_lazy(
@@ -60,13 +59,13 @@ class StorageApp(app_module.App):
'storage:index', parent_url_name='system')
self.add(menu_item)
- daemon = Daemon('daemon-udiskie', managed_services[0])
- self.add(daemon)
-
# Check every hour for low disk space, every 3 minutes in debug mode
interval = 180 if cfg.develop else 3600
glib.schedule(interval, warn_about_low_disk_space)
+ # Schedule initialization of UDisks2 initialization
+ glib.schedule(3, udisks2.init, repeat=False)
+
def init():
"""Initialize the module."""
@@ -334,3 +333,22 @@ def warn_about_low_disk_space(request):
title=title, message=message,
actions=actions, data=data,
group='admin')
+
+
+def report_failing_drive(id, is_failing):
+ """Show or withdraw notification about failing drive."""
+ notification_id = 'storage-disk-failure-' + base64.b32encode(
+ id.encode()).decode()
+
+ from plinth.notification import Notification
+ title = ugettext_noop('Disk failure imminent')
+ message = ugettext_noop(
+ 'Disk {id} is reporting that it is likely to fail in the near future. '
+ 'Copy any data while you still can and replace the drive.')
+ data = {'id': id}
+ note = Notification.update_or_create(id=notification_id, app_id='storage',
+ severity='error', title=title,
+ message=message, actions=[{
+ 'type': 'dismiss'
+ }], data=data, group='admin')
+ note.dismiss(should_dismiss=not is_failing)
diff --git a/plinth/modules/storage/data/lib/systemd/system/freedombox-udiskie.service b/plinth/modules/storage/data/lib/systemd/system/freedombox-udiskie.service
deleted file mode 100644
index 431113857..000000000
--- a/plinth/modules/storage/data/lib/systemd/system/freedombox-udiskie.service
+++ /dev/null
@@ -1,22 +0,0 @@
-# SPDX-License-Identifier: AGPL-3.0-or-later
-
-[Unit]
-Description=handle automounting
-Documentation=man:udiskie(1)
-
-[Service]
-ExecStart=/usr/bin/udiskie
-LockPersonality=yes
-PrivateTmp=yes
-ProtectControlGroups=yes
-ProtectHome=yes
-ProtectKernelLogs=yes
-ProtectKernelModules=yes
-ProtectKernelTunables=yes
-ProtectSystem=full
-RestrictAddressFamilies=AF_UNIX
-RestrictRealtime=yes
-SystemCallArchitectures=native
-
-[Install]
-WantedBy=multi-user.target
diff --git a/plinth/modules/storage/data/usr/share/polkit-1/rules.d/50-freedombox-udisks2.rules b/plinth/modules/storage/data/usr/share/polkit-1/rules.d/50-freedombox-udisks2.rules
new file mode 100644
index 000000000..89e521108
--- /dev/null
+++ b/plinth/modules/storage/data/usr/share/polkit-1/rules.d/50-freedombox-udisks2.rules
@@ -0,0 +1,18 @@
+/*
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+This file is used only by policykit-1 version > 0.105. A corresponding .pkla
+file is used by policykit-1 <= 0.105. See:
+https://davidz25.blogspot.com/2012/06/authorization-rules-in-polkit.html
+
+*/
+
+polkit.addRule(function(action, subject) {
+ if ((action.id == "org.freedesktop.udisks2.filesystem-mount" ||
+ action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
+ action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" ||
+ action.id == "org.freedesktop.udisks2.filesystem-fstab") &&
+ subject.user == "plinth") {
+ return polkit.Result.YES;
+ }
+});
diff --git a/plinth/modules/storage/data/var/lib/polkit-1/localauthority/10-vendor.d/org.freedombox.UDisks2.pkla b/plinth/modules/storage/data/var/lib/polkit-1/localauthority/10-vendor.d/org.freedombox.UDisks2.pkla
new file mode 100644
index 000000000..acb5350f5
--- /dev/null
+++ b/plinth/modules/storage/data/var/lib/polkit-1/localauthority/10-vendor.d/org.freedombox.UDisks2.pkla
@@ -0,0 +1,4 @@
+[Allow FreedomBox to manage UDisks2]
+Identity=unix-user:plinth
+Action=org.freedesktop.udisks2.filesystem-mount;org.freedesktop.udisks2.filesystem-mount-system;org.freedesktop.udisks2.filesystem-mount-other-seat;org.freedesktop.udisks2.filesystem-fstab
+ResultAny=yes
diff --git a/plinth/modules/storage/udisks2.py b/plinth/modules/storage/udisks2.py
new file mode 100644
index 000000000..e662ea75e
--- /dev/null
+++ b/plinth/modules/storage/udisks2.py
@@ -0,0 +1,340 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+Handle disk operations using UDisk2 DBus API.
+"""
+
+import logging
+import threading
+
+from plinth import actions
+from plinth.errors import ActionError
+from plinth.utils import import_from_gi
+
+glib = import_from_gi('GLib', '2.0')
+gio = import_from_gi('Gio', '2.0')
+
+_DBUS_NAME = 'org.freedesktop.UDisks2'
+
+_INTERFACES = {
+ 'Ata': 'org.freedesktop.UDisks2.Drive.Ata',
+ 'Block': 'org.freedesktop.UDisks2.Block',
+ 'Drive': 'org.freedesktop.UDisks2.Drive',
+ 'Filesystem': 'org.freedesktop.UDisks2.Filesystem',
+ 'Job': 'org.freedesktop.UDisks2.Job',
+ 'Manager': 'org.freedesktop.UDisks2.Manager',
+ 'ObjectManager': 'org.freedesktop.DBus.ObjectManager',
+ 'Partition': 'org.freedesktop.UDisks2.Partition',
+ 'Properties': 'org.freedesktop.DBus.Properties',
+ 'UDisks2': 'org.freedesktop.UDisks2',
+}
+
+_OBJECTS = {
+ 'drives': '/org/freedesktop/UDisks2/drives/',
+ 'jobs': '/org/freedesktop/UDisks2/jobs/',
+ 'Manager': '/org/freedesktop/UDisks2/Manager',
+ 'UDisks2': '/org/freedesktop/UDisks2',
+}
+
+_ERRORS = {
+ 'AlreadyMounted': 'org.freedesktop.UDisks2.Error.AlreadyMounted',
+ 'Failed': 'org.freedesktop.UDisks2.Error.Failed',
+}
+
+_jobs = {}
+
+logger = logging.getLogger(__name__)
+
+
+def _get_dbus_proxy(object_, interface):
+ """Return a DBusProxy for a given UDisks2 object and interface."""
+ connection = gio.bus_get_sync(gio.BusType.SYSTEM)
+ return gio.DBusProxy.new_sync(connection, gio.DBusProxyFlags.NONE, None,
+ _DBUS_NAME, object_, interface)
+
+
+class Proxy:
+ """Base methods for abstraction over UDisks2 DBus proxy objects."""
+ interface = None
+ properties = {}
+
+ def __init__(self, object_path):
+ """Return an object instance."""
+ self.object_path = object_path
+ self._proxy = _get_dbus_proxy(object_path, self.interface)
+
+ def __getattr__(self, name):
+ """Retrieve a property from underlying proxy or delegate."""
+ if name not in self.properties:
+ return getattr(self._proxy, name)
+
+ signature, original_name = self.properties[name]
+ value = self._proxy.get_cached_property(original_name)
+
+ if value is None:
+ return value
+
+ if signature == 'ay':
+ return bytes(value)[:-1].decode()
+
+ if signature == 'aay':
+ return [bytes(value_item).decode()[:-1] for value_item in value]
+
+ if signature in ('s', 'b', 'o', 'u'):
+ return glib.Variant.unpack(value)
+
+ raise ValueError('Unhandled type')
+
+
+class Drive(Proxy):
+ """Abstraction for UDisks2 Drive."""
+ interface = _INTERFACES['Drive']
+ properties = {'id': ('s', 'Id')}
+
+
+class BlockDevice(Proxy):
+ """Abstraction for UDisks2 Block device."""
+ interface = _INTERFACES['Block']
+ properties = {
+ 'crypto_backing_device': ('o', 'CryptoBackingDevice'),
+ 'device': ('ay', 'Device'),
+ 'hint_ignore': ('b', 'HintIgnore'),
+ 'hint_system': ('b', 'HintSystem'),
+ 'id': ('s', 'Id'),
+ 'preferred_device': ('ay', 'PreferredDevice'),
+ 'symlinks': ('aay', 'Symlinks'),
+ }
+
+
+class Partition(Proxy):
+ """Abstraction for UDisks2 Partition."""
+ interface = _INTERFACES['Partition']
+ properties = {
+ 'number': ('u', 'Number'),
+ }
+
+
+class Filesystem(Proxy):
+ """Abstraction for UDisks2 Filesystem."""
+ interface = _INTERFACES['Filesystem']
+ properties = {'mount_points': ('aay', 'MountPoints')}
+
+
+def _mount(object_path):
+ """Start the mount operation on an block device.
+
+ Runs in a separate thread from glib due to blocking operations.
+
+ """
+ filesystem = Filesystem(object_path)
+ block_device = BlockDevice(object_path)
+ if filesystem.mount_points:
+ logger.info('Ignoring auto-mount on already mounted device: %s %s',
+ block_device.id, block_device.preferred_device)
+ return
+
+ logger.info('Auto-mounting device: %s %s', block_device.id,
+ block_device.preferred_device)
+ try:
+ actions.superuser_run(
+ 'storage',
+ ['mount', '--block-device', block_device.preferred_device],
+ log_error=False)
+ except ActionError as exception:
+ parts = exception.args[2].split(':')
+ if parts[1].strip() != 'GDBus.Error':
+ raise
+
+ if parts[2].strip() == _ERRORS['AlreadyMounted']:
+ logger.warning('Device is already mounted: %s %s', block_device.id,
+ block_device.preferred_device)
+ elif parts[2].strip() == _ERRORS['Failed']:
+ logger.warning('Mount operation failed: %s %s: %s',
+ block_device.id, block_device.preferred_device,
+ exception)
+ else:
+ raise
+
+
+def _on_job_created(object_path, interfaces_created):
+ """Called when a job is created.
+
+ Runs in glib thread. No blocking operations.
+
+ """
+ job = interfaces_created[_INTERFACES['Job']]
+ if job['Operation'] == 'filesystem-mount':
+ logger.info('Mounting operation started on disk: %s',
+ ', '.join(job['Objects']))
+ _jobs[object_path] = job
+
+
+def _on_job_removed(object_path):
+ """Called when a job is completed.
+
+ Runs in glib thread. No blocking operations.
+
+ """
+ if object_path in _jobs:
+ logger.info('Mounting operation completed on disk: %s',
+ ', '.join(_jobs[object_path]['Objects']))
+
+
+def _on_filesystem_added(object_path, _interfaces):
+ """Called when a filesystem is added.
+
+ Runs in glib thread. No blocking operations.
+
+ """
+ threading.Thread(target=_consider_for_mounting, args=[object_path]).start()
+
+
+def _consider_for_mounting(object_path):
+ """Check if the block device needs mounting and mount it."""
+ block_device = BlockDevice(object_path)
+
+ # Ignore non-block devices.
+ if not block_device.device:
+ logger.info('Ignoring non-block device, not auto-mounting %s',
+ object_path)
+ return
+
+ logger.info('New filesystem found: %s %s', block_device.id,
+ block_device.preferred_device)
+
+ # Ignore devices that are hinted by udev to ignore.
+ if block_device.hint_ignore:
+ logger.info(
+ 'Ignoring auto-mount of device due to udev ignore hint: %s %s',
+ block_device.id, block_device.preferred_device)
+ return
+
+ # Ignore docker devices.
+ for symlink in block_device.symlinks:
+ if symlink.startswith('/dev/mapper/docker-') or \
+ symlink.startswith('/dev/disk/by-id/dm-name-docker-'):
+ logger.info('Ignoring auto-mount of docker device: %s %s',
+ block_device.id, block_device.preferred_device)
+ return
+
+ # Ignore non-external devices that don't have partition table (top-level
+ # filesystem). If the device is backed by a crypto device, still handle it.
+ # XXX: This rule is from udiskie. Should we keep it?
+ partition = Partition(object_path)
+ if block_device.hint_system and not partition.number and \
+ block_device.crypto_backing_device == '/':
+ logger.info('Ignoring auto-mount of top-level internal device: %s %s',
+ block_device.id, block_device.preferred_device)
+ return
+
+ _mount(object_path)
+
+
+def _on_interfaces_added(_connection, _sender_name, _object_path,
+ _interface_name, _signal_name, parameters, _user_data,
+ _unknown):
+ """Called when objects/interfaces have been added.
+
+ Runs in glib thread. No blocking operations.
+
+ """
+ object_path, interfaces = parameters
+ if object_path.startswith(_OBJECTS['jobs']):
+ _on_job_created(object_path, interfaces)
+
+ if _INTERFACES['Filesystem'] in interfaces:
+ _on_filesystem_added(object_path, interfaces)
+
+
+def _on_interfaces_removed(_connection, _sender_name, _object_path,
+ _interface_name, _signal_name, parameters,
+ _user_data, _unknown):
+ """Called when objects/interfaces have been removed.
+
+ Runs in glib thread. No blocking operations.
+
+ """
+ object_path, _interfaces = parameters
+ if object_path.startswith(_OBJECTS['jobs']):
+ _on_job_removed(object_path)
+
+
+def _on_properties_changed(_connection, _sender_name, object_path,
+ _interface_name, _signal_name, parameters,
+ _user_data, _unknown):
+ """Called when properties change on matching objects.
+
+ Runs in glib thread. No blocking operations.
+
+ """
+ interface_changed, properties_changed, _properties_invalided = parameters
+ if interface_changed == _INTERFACES['Ata'] and \
+ 'SmartFailing' in properties_changed:
+ drive = Drive(object_path)
+ thread = threading.Thread(
+ target=_report_failing_drive,
+ args=[drive.id, properties_changed['SmartFailing']])
+ thread.start()
+
+
+def _report_failing_drive(id_, is_failing):
+ """Show or withdraw notification about failing drive."""
+ if is_failing:
+ logger.info('Drive %s is failing', id_)
+ else:
+ logger.info('Drive %s appears healthy', id_)
+
+ from . import report_failing_drive
+ report_failing_drive(id_, is_failing)
+
+
+def _connect():
+ """Connect to all necessary signals from UDisks2."""
+ udisks = _get_dbus_proxy(_OBJECTS['UDisks2'], _INTERFACES['UDisks2'])
+ connection = udisks.get_connection()
+
+ connection.signal_subscribe(None, _INTERFACES['ObjectManager'],
+ 'InterfacesAdded', _OBJECTS['UDisks2'], None,
+ gio.DBusSignalFlags.NONE, _on_interfaces_added,
+ None, None)
+ connection.signal_subscribe(None, _INTERFACES['ObjectManager'],
+ 'InterfacesRemoved', _OBJECTS['UDisks2'], None,
+ gio.DBusSignalFlags.NONE,
+ _on_interfaces_removed, None, None)
+ connection.signal_subscribe(udisks.get_name(), _INTERFACES['Properties'],
+ 'PropertiesChanged', None, None,
+ gio.DBusSignalFlags.NONE,
+ _on_properties_changed, None, None)
+
+
+def _check_failing_drives():
+ """Check if any of the drives are failing and report."""
+ manager = _get_dbus_proxy(_OBJECTS['UDisks2'],
+ _INTERFACES['ObjectManager'])
+ objects = manager.GetManagedObjects()
+ for _, interface_and_properties in objects.items():
+ if _INTERFACES['Drive'] in interface_and_properties and \
+ _INTERFACES['Ata'] in interface_and_properties:
+ _report_failing_drive(
+ interface_and_properties[_INTERFACES['Drive']]['Id'],
+ interface_and_properties[_INTERFACES['Ata']]['SmartFailing'])
+
+
+def _mount_initial_devices():
+ """Check if any of the block devices need mounting."""
+ manager = _get_dbus_proxy(_OBJECTS['UDisks2'],
+ _INTERFACES['ObjectManager'])
+ objects = manager.GetManagedObjects()
+ for object_, interface_and_properties in objects.items():
+ if _INTERFACES['Filesystem'] in interface_and_properties:
+ _consider_for_mounting(object_)
+
+
+def init(_data):
+ """Subscribe to signals from UDisks2 and check for failing drives.
+
+ Runs in a separate thread from glib thread due to blocking operations.
+
+ """
+ _connect()
+ _check_failing_drives()
+ _mount_initial_devices()
From dbf70b9fefbb2e5fd8ab0de98a893882991d5a45 Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Sat, 16 May 2020 08:04:27 -0400
Subject: [PATCH 20/40] quassel: Use systemd sandboxing features
Tests:
- Installed Quassel and diagnostics are passed.
- Quassel client connection is successful.
Signed-off-by: James Valleroy
[sunil: Remove RemainAfterExit=no as it is default]
[sunil: Remove ReadWritePaths= as {Logs|State}Directory= take care of it]
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: Sunil Mohan Adapa
---
.../quasselcore.service.d/freedombox.conf | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
create mode 100644 plinth/modules/quassel/data/lib/systemd/system/quasselcore.service.d/freedombox.conf
diff --git a/plinth/modules/quassel/data/lib/systemd/system/quasselcore.service.d/freedombox.conf b/plinth/modules/quassel/data/lib/systemd/system/quasselcore.service.d/freedombox.conf
new file mode 100644
index 000000000..2a8068bfc
--- /dev/null
+++ b/plinth/modules/quassel/data/lib/systemd/system/quasselcore.service.d/freedombox.conf
@@ -0,0 +1,17 @@
+[Service]
+LockPersonality=yes
+LogsDirectory=quassel
+NoNewPrivileges=yes
+PrivateDevices=yes
+PrivateMounts=yes
+PrivateTmp=yes
+ProtectControlGroups=yes
+ProtectHome=yes
+ProtectKernelLogs=yes
+ProtectKernelModules=yes
+ProtectKernelTunables=yes
+ProtectSystem=strict
+RestrictAddressFamilies=AF_INET AF_INET6
+RestrictRealtime=yes
+StateDirectory=quassel
+SystemCallArchitectures=native
From 355b2be90e12faf2b3a5bd290fefedb76b12f411 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Tue, 12 May 2020 17:11:21 -0700
Subject: [PATCH 21/40] package: Fix error log when checking if package manager
is busy
Reuse the method in package.py that checks is package manager is busy without
printing and error log.
Tests performed:
- Try to install a package and wait at the apt confirmation prompt.
- Go to power index page /sys/power/ . It shows a warning that package manager
is busy. No error log is printed.
- Go to system restart page. It shows a warning that package manager is busy. No
error log is printed.
- Go to system poweroff page. It shows a warning that package manager is busy.
No error log is printed.
- Without package manager being busy, above warnings are not shown.
- Go to manual update package. It shows as updating if apt is busy, otherwise
shows the manual update button.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/power/views.py | 17 ++++-------------
plinth/modules/upgrades/views.py | 13 ++-----------
2 files changed, 6 insertions(+), 24 deletions(-)
diff --git a/plinth/modules/power/views.py b/plinth/modules/power/views.py
index 54f6eaaca..f104a0c96 100644
--- a/plinth/modules/power/views.py
+++ b/plinth/modules/power/views.py
@@ -8,7 +8,7 @@ from django.shortcuts import redirect
from django.template.response import TemplateResponse
from django.urls import reverse
-from plinth import actions
+from plinth import actions, package
from plinth.modules import power
@@ -18,7 +18,7 @@ def index(request):
request, 'power.html', {
'title': power.app.info.name,
'app_info': power.app.info,
- 'pkg_manager_is_busy': _is_pkg_manager_busy()
+ 'pkg_manager_is_busy': package.is_package_manager_busy()
})
@@ -37,7 +37,7 @@ def restart(request):
'title': power.app.info.name,
'form': form,
'manual_page': power.app.info.manual_page,
- 'pkg_manager_is_busy': _is_pkg_manager_busy()
+ 'pkg_manager_is_busy': package.is_package_manager_busy()
})
@@ -56,14 +56,5 @@ def shutdown(request):
'title': power.app.info.name,
'form': form,
'manual_page': power.app.info.manual_page,
- 'pkg_manager_is_busy': _is_pkg_manager_busy()
+ 'pkg_manager_is_busy': package.is_package_manager_busy()
})
-
-
-def _is_pkg_manager_busy():
- """Return whether a package manager is running."""
- try:
- actions.superuser_run('packages', ['is-package-manager-busy'])
- return True
- except actions.ActionError:
- return False
diff --git a/plinth/modules/upgrades/views.py b/plinth/modules/upgrades/views.py
index 1da6c734d..4e0549f2c 100644
--- a/plinth/modules/upgrades/views.py
+++ b/plinth/modules/upgrades/views.py
@@ -8,7 +8,7 @@ from django.template.response import TemplateResponse
from django.urls import reverse_lazy
from django.utils.translation import ugettext as _
-from plinth import actions
+from plinth import actions, package
from plinth.errors import ActionError
from plinth.modules import upgrades
from plinth.views import AppView
@@ -55,15 +55,6 @@ class UpgradesConfigurationView(AppView):
return super().form_valid(form)
-def is_package_manager_busy():
- """Return whether a package manager is running."""
- try:
- actions.superuser_run('packages', ['is-package-manager-busy'])
- return True
- except actions.ActionError:
- return False
-
-
def get_log():
"""Return the current log for unattended upgrades."""
return actions.superuser_run('upgrades', ['get-log'])
@@ -71,7 +62,7 @@ def get_log():
def upgrade(request):
"""Serve the upgrade page."""
- is_busy = is_package_manager_busy()
+ is_busy = package.is_package_manager_busy()
if request.method == 'POST':
try:
From 4dfa9436b123d8e840f100adff88902ccdbd9326 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Tue, 12 May 2020 17:15:47 -0700
Subject: [PATCH 22/40] power: cosmetic: Fix flake8 warnings
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/power/views.py | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/plinth/modules/power/views.py b/plinth/modules/power/views.py
index f104a0c96..fad662eca 100644
--- a/plinth/modules/power/views.py
+++ b/plinth/modules/power/views.py
@@ -29,9 +29,8 @@ def restart(request):
if request.method == 'POST':
actions.superuser_run('power', ['restart'], run_in_background=True)
return redirect(reverse('apps'))
- else:
- form = Form(prefix='power')
+ form = Form(prefix='power')
return TemplateResponse(
request, 'power_restart.html', {
'title': power.app.info.name,
@@ -48,9 +47,8 @@ def shutdown(request):
if request.method == 'POST':
actions.superuser_run('power', ['shutdown'], run_in_background=True)
return redirect(reverse('apps'))
- else:
- form = Form(prefix='power')
+ form = Form(prefix='power')
return TemplateResponse(
request, 'power_shutdown.html', {
'title': power.app.info.name,
From 0b1219a90cb5e3b56c73d297dfa9c268cacdb182 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Tue, 12 May 2020 17:16:21 -0700
Subject: [PATCH 23/40] first_setup: Fix regression with logo not showing
Logo is not shown when first setup is running in the background and the first
setup busy page is shown. This is a regression when PNG logos were moved to a
different folder.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/templates/first_setup.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plinth/templates/first_setup.html b/plinth/templates/first_setup.html
index 7740b5d41..21e94b29c 100644
--- a/plinth/templates/first_setup.html
+++ b/plinth/templates/first_setup.html
@@ -29,7 +29,7 @@
{% endif %}
-
From 3c85846fa2edd8d2f49de844a4c9bff84208ff35 Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Fri, 15 May 2020 12:15:58 -0400
Subject: [PATCH 24/40] minidlna: Move sysctl config to
/etc/sysctl.d/50-freedombox.conf
/etc/sysctl.conf is owned by procps package.
Test: Run minidlna install on fresh image.
- /etc/sysctl.conf is not modified.
- /etc/sysctl.d/50-freedombox.conf has the expected content.
- /proc/sys/fs/inotify/max_user_watches contains 100000.
- Running with these changes upgrades app version and triggers a setup. Changes
in /etc/sysctl.conf are removed. After undoing the changes /etc/sysctl.conf is
identical to pristine version installed from procps package. This can be
obtained by running; rm -f /etc/sysctl.conf ; apt install --reinstall procps -o
Dpkg::Options::=--force-confmiss
Closes #1802.
Signed-off-by: James Valleroy
[sunil: Undo changes done in /etc/sysctl.conf in older versions]
[sunil: Increment app version to trigger configuration migration]
[sunil: Ensure that app is not re-enabled during migration]
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
actions/minidlna | 36 ++++++++++++++++++++++-------
plinth/modules/minidlna/__init__.py | 5 ++--
2 files changed, 31 insertions(+), 10 deletions(-)
diff --git a/actions/minidlna b/actions/minidlna
index 70f28d657..9afed64f7 100755
--- a/actions/minidlna
+++ b/actions/minidlna
@@ -15,6 +15,11 @@ from plinth.utils import grep
CONFIG_PATH = '/etc/minidlna.conf'
+SYSCTL_CONF = '''# This file is managed and overwritten by FreedomBox.
+# Helps minidlna monitor changes in large media directories
+fs.inotify.max_user_watches = 100000
+'''
+
def parse_arguments():
"""Return parsed command line arguments as dictionary."""
@@ -33,19 +38,34 @@ def parse_arguments():
return parser.parse_args()
+def _undo_old_configuration_changes():
+ """Restore /etc/sysctl.conf to before our changes.
+
+ Older version of minidlna app in FreedomBox < 20.9 wrote to
+ /etc/sysctl.conf directly. This will cause conffile prompt during upgrade
+ of procps package. Undo the changes so that upgrade can happen smoothly.
+
+ """
+ aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD +
+ augeas.Augeas.NO_MODL_AUTOLOAD)
+ aug.set('/augeas/load/Sysctl/lens', 'Sysctl.lns')
+ aug.set('/augeas/load/Sysctl/incl[last() + 1]', '/etc/sysctl.conf')
+ aug.load()
+
+ key_path = '/files/etc/sysctl.conf/fs.inotify.max_user_watches'
+ if aug.get(key_path) == '100000':
+ aug.remove(key_path)
+ aug.save()
+
+
def subcommand_setup(arguments):
"""
Increase inotify watches per folder to allow minidlna to
monitor changes in large media-dirs.
"""
- aug = augeas.Augeas(
- flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD)
- aug.set('/augeas/load/Sysctl/lens', 'Sysctl.lns')
- aug.set('/augeas/load/Sysctl/incl[last() + 1]', '/etc/sysctl.conf')
- aug.load()
-
- aug.set('/files/etc/sysctl.conf/fs.inotify.max_user_watches', '100000')
- aug.save()
+ _undo_old_configuration_changes()
+ with open('/etc/sysctl.d/50-freedombox-minidlna.conf', 'w') as conf:
+ conf.write(SYSCTL_CONF)
subprocess.run(['systemctl', 'restart', 'systemd-sysctl'], check=True)
diff --git a/plinth/modules/minidlna/__init__.py b/plinth/modules/minidlna/__init__.py
index 778b971b5..e888d0176 100644
--- a/plinth/modules/minidlna/__init__.py
+++ b/plinth/modules/minidlna/__init__.py
@@ -13,7 +13,7 @@ from plinth.modules.users.components import UsersAndGroups
from .manifest import backup, clients # noqa
-version = 1
+version = 2
managed_packages = ['minidlna']
@@ -94,4 +94,5 @@ def setup(helper, old_version=None):
"""Install and configure the package"""
helper.install(managed_packages)
helper.call('post', actions.superuser_run, 'minidlna', ['setup'])
- helper.call('post', app.enable)
+ if not old_version:
+ helper.call('post', app.enable)
From d44283d9bac8a74aad7fbd57e41aeb885ffd116e Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Sun, 17 May 2020 14:25:57 -0700
Subject: [PATCH 25/40] minidlna: cosmetic: isort fixes
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
actions/minidlna | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/actions/minidlna b/actions/minidlna
index 9afed64f7..f84135f02 100755
--- a/actions/minidlna
+++ b/actions/minidlna
@@ -4,12 +4,13 @@
Configuration actions for the minidlna server.
"""
import argparse
-from tempfile import mkstemp
-from shutil import move
import subprocess
-from os import fdopen, remove, chmod, stat
+from os import chmod, fdopen, remove, stat
+from shutil import move
+from tempfile import mkstemp
import augeas
+
from plinth import action_utils
from plinth.utils import grep
From 74dac0b49de2f3adaa79e017669e208216c493e7 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Sun, 17 May 2020 12:37:56 -0700
Subject: [PATCH 26/40] mediawiki: Stop jobrunner during backup/restore
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/mediawiki/manifest.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/plinth/modules/mediawiki/manifest.py b/plinth/modules/mediawiki/manifest.py
index 39771604c..79d3c266d 100644
--- a/plinth/modules/mediawiki/manifest.py
+++ b/plinth/modules/mediawiki/manifest.py
@@ -2,8 +2,8 @@
from django.utils.translation import ugettext_lazy as _
-from plinth.modules.backups.api import validate as validate_backup
from plinth.clients import validate
+from plinth.modules.backups.api import validate as validate_backup
clients = validate([{
'name': _('MediaWiki'),
@@ -19,5 +19,6 @@ backup = validate_backup({
},
'data': {
'directories': ['/var/lib/mediawiki-db/']
- }
+ },
+ 'services': ['mediawiki-jobrunner']
})
From 317b5207f693f6e70c80f5209e1cf91ab5fba743 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Sun, 17 May 2020 12:43:28 -0700
Subject: [PATCH 27/40] minidlna: Stop daemon during backup/restore
Backup and restore the configuration file too.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/minidlna/manifest.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/plinth/modules/minidlna/manifest.py b/plinth/modules/minidlna/manifest.py
index b99644a26..716b72e99 100644
--- a/plinth/modules/minidlna/manifest.py
+++ b/plinth/modules/minidlna/manifest.py
@@ -118,6 +118,8 @@ clients = validate([
# for now hard code default media folder.
backup = validate_backup({
'data': {
+ 'files': ['/etc/minidlna.conf'],
'directories': ['/var/lib/minidlna']
- }
+ },
+ 'services': ['minidlna']
})
From e66988840bb9012b686856059655646a569de044 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Sun, 17 May 2020 12:43:47 -0700
Subject: [PATCH 28/40] mumble: Stop server during backup/restore
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/mumble/manifest.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/plinth/modules/mumble/manifest.py b/plinth/modules/mumble/manifest.py
index 3dfcca553..d605e6817 100644
--- a/plinth/modules/mumble/manifest.py
+++ b/plinth/modules/mumble/manifest.py
@@ -66,4 +66,9 @@ clients = validate([{
}]
}])
-backup = validate_backup({'data': {'directories': ['/var/lib/mumble-server']}})
+backup = validate_backup({
+ 'data': {
+ 'directories': ['/var/lib/mumble-server']
+ },
+ 'services': ['mumble-server']
+})
From 664067aa13db5596e67b24469f9296c234b6fbcc Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Sun, 17 May 2020 12:44:05 -0700
Subject: [PATCH 29/40] quassel: Fix stopping server during backup/restore
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/quassel/manifest.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plinth/modules/quassel/manifest.py b/plinth/modules/quassel/manifest.py
index fb252e747..f4e4b4b5a 100644
--- a/plinth/modules/quassel/manifest.py
+++ b/plinth/modules/quassel/manifest.py
@@ -49,5 +49,5 @@ backup = validate_backup({
'secrets': {
'directories': ['/var/lib/quassel/']
},
- 'services': ['quassel-core'],
+ 'services': ['quasselcore'],
})
From 935db83d8b21560e13b5522a950a0008565a4bd6 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Sun, 17 May 2020 12:44:31 -0700
Subject: [PATCH 30/40] tor: Fix stopping server during backup/restore
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/tor/manifest.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plinth/modules/tor/manifest.py b/plinth/modules/tor/manifest.py
index 801217f3b..a15799ad1 100644
--- a/plinth/modules/tor/manifest.py
+++ b/plinth/modules/tor/manifest.py
@@ -48,5 +48,5 @@ backup = validate_backup({
'secrets': {
'directories': ['/var/lib/tor/', '/var/lib/tor-instances/']
},
- 'services': ['tor@service']
+ 'services': ['tor@plinth']
})
From 0b5c195e170059455a6261d496cf5f9c1ce71869 Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Mon, 11 May 2020 11:07:26 -0400
Subject: [PATCH 31/40] upgrades: Add needrestart to restart services as needed
Signed-off-by: James Valleroy
Reviewed-by: Sunil Mohan Adapa
---
plinth/modules/upgrades/__init__.py | 2 +-
.../upgrades/data/etc/needrestart/conf.d/freedombox.conf | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 plinth/modules/upgrades/data/etc/needrestart/conf.d/freedombox.conf
diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py
index 8016d3f36..a70038037 100644
--- a/plinth/modules/upgrades/__init__.py
+++ b/plinth/modules/upgrades/__init__.py
@@ -17,7 +17,7 @@ version = 3
is_essential = True
-managed_packages = ['unattended-upgrades']
+managed_packages = ['unattended-upgrades', 'needrestart']
_description = [
_('Check for and apply the latest software and security updates.')
diff --git a/plinth/modules/upgrades/data/etc/needrestart/conf.d/freedombox.conf b/plinth/modules/upgrades/data/etc/needrestart/conf.d/freedombox.conf
new file mode 100644
index 000000000..a1853d350
--- /dev/null
+++ b/plinth/modules/upgrades/data/etc/needrestart/conf.d/freedombox.conf
@@ -0,0 +1,2 @@
+# Automatically restart services when needed.
+$nrconf{restart} = 'a';
From 7c38dad03dc041289d2a7eacea8afc17adc84e91 Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Wed, 13 May 2020 12:08:51 -0400
Subject: [PATCH 32/40] upgrades: Enable Automatic-Reboot option of
unattended-upgrades
Closes #654.
Signed-off-by: James Valleroy
Reviewed-by: Sunil Mohan Adapa
---
.../upgrades/data/etc/apt/apt.conf.d/60unattended-upgrades | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/plinth/modules/upgrades/data/etc/apt/apt.conf.d/60unattended-upgrades b/plinth/modules/upgrades/data/etc/apt/apt.conf.d/60unattended-upgrades
index eaa4f7233..f9965ce21 100644
--- a/plinth/modules/upgrades/data/etc/apt/apt.conf.d/60unattended-upgrades
+++ b/plinth/modules/upgrades/data/etc/apt/apt.conf.d/60unattended-upgrades
@@ -14,3 +14,7 @@ Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Origins-Pattern {
"o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports";
};
+
+// Automatically reboot *WITHOUT CONFIRMATION* if
+// the file /var/run/reboot-required is found after the upgrade
+Unattended-Upgrade::Automatic-Reboot "true";
From 6ee60647c92f105e56a86605148517d5332472b5 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Mon, 18 May 2020 13:34:11 -0700
Subject: [PATCH 33/40] upgrades: Always schedule a reboot at 02:00 local time
Test:
- Downgrade kernel (linux-image-amd64) to earlier version.
- Reboot into the older kernel.
- Remove the newer kernel package.
- Run FreedomBox in develop mode.
- Run unattended-upgrades --debug to upgrade all packages.
- At the end a message is printed that shutdown is scheduled.
- Check /run/systemd/shutdown/scheduled file and see that microseconds since
epoch is set to tomorrow 02:00 local time.
Signed-off-by: Sunil Mohan Adapa
---
.../upgrades/data/etc/apt/apt.conf.d/60unattended-upgrades | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/plinth/modules/upgrades/data/etc/apt/apt.conf.d/60unattended-upgrades b/plinth/modules/upgrades/data/etc/apt/apt.conf.d/60unattended-upgrades
index f9965ce21..363873f00 100644
--- a/plinth/modules/upgrades/data/etc/apt/apt.conf.d/60unattended-upgrades
+++ b/plinth/modules/upgrades/data/etc/apt/apt.conf.d/60unattended-upgrades
@@ -18,3 +18,7 @@ Unattended-Upgrade::Origins-Pattern {
// Automatically reboot *WITHOUT CONFIRMATION* if
// the file /var/run/reboot-required is found after the upgrade
Unattended-Upgrade::Automatic-Reboot "true";
+
+// If automatic reboot is enabled and needed, reboot at the specific
+// time instead of immediately
+Unattended-Upgrade::Automatic-Reboot-Time "02:00";
From d93de4fa61fd08e646edeb5ec11f271deb314976 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Mon, 18 May 2020 13:34:22 -0700
Subject: [PATCH 34/40] upgrades: Add information about service restart and
system reboot
Signed-off-by: Sunil Mohan Adapa
---
plinth/modules/upgrades/__init__.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py
index a70038037..6b6d91331 100644
--- a/plinth/modules/upgrades/__init__.py
+++ b/plinth/modules/upgrades/__init__.py
@@ -20,7 +20,12 @@ is_essential = True
managed_packages = ['unattended-upgrades', 'needrestart']
_description = [
- _('Check for and apply the latest software and security updates.')
+ _('Check for and apply the latest software and security updates.'),
+ _('Updates are run at 06:00 everyday according to local time zone. Set '
+ 'your time zone in Date & Time app. Apps are restarted after update '
+ 'causing them to be unavailable briefly. If system reboot is deemed '
+ 'necessary, it is done automatically at 02:00 causing all apps to be '
+ 'unavailable briefly.')
]
app = None
From f74ca9044a40acdbee96130edfd4e7886e1809a5 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Tue, 12 May 2020 11:19:20 -0700
Subject: [PATCH 35/40] performance: Launch the Cockpit graphs directly if
possible
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/performance/manifest.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/plinth/modules/performance/manifest.py b/plinth/modules/performance/manifest.py
index 4d0c87e6d..22b616c51 100644
--- a/plinth/modules/performance/manifest.py
+++ b/plinth/modules/performance/manifest.py
@@ -4,12 +4,13 @@ FreedomBox app for System Monitoring (cockpit-pcp) in ‘System’.
"""
from django.utils.translation import ugettext_lazy as _
+
from plinth.clients import validate
clients = validate([{
'name': _('Cockpit'),
'platforms': [{
'type': 'web',
- 'url': '/_cockpit/'
+ 'url': '/_cockpit/system/graphs'
}]
}])
From 6e32ae9045cd1c9433d0dc9e93020739a93457ed Mon Sep 17 00:00:00 2001
From: "Luis A. Arizmendi"
Date: Mon, 18 May 2020 07:49:23 +0000
Subject: [PATCH 36/40] Translated using Weblate (Spanish)
Currently translated at 100.0% (1264 of 1264 strings)
---
plinth/locale/es/LC_MESSAGES/django.po | 128 ++++++++++---------------
1 file changed, 53 insertions(+), 75 deletions(-)
diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po
index d0ebe5ce9..66f1ad1f0 100644
--- a/plinth/locale/es/LC_MESSAGES/django.po
+++ b/plinth/locale/es/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-05-04 19:59-0400\n"
-"PO-Revision-Date: 2020-05-02 08:11+0000\n"
+"PO-Revision-Date: 2020-05-18 22:17+0000\n"
"Last-Translator: Luis A. Arizmendi \n"
"Language-Team: Spanish \n"
@@ -969,20 +969,27 @@ msgid ""
"other communication servers can use it to establish a call between parties "
"who are otherwise unable connect to each other."
msgstr ""
+"El servidor Coturn permite realizar llamadas de audio y videoconferencias "
+"mediante la implementación de los protocolos TURN y STUN. Servidores WebRTC, "
+"SIP y de otros tipos pueden usarlo para establecer llamadas entre partes que "
+"no tienen otra alternativa disponible."
#: plinth/modules/coturn/__init__.py:35
msgid ""
"It is not meant to be used directly by users. Servers such as matrix-synapse "
"need to be configured with the details provided here."
msgstr ""
+"No está diseñado para una manipulación directa por el usuario. Algunos "
+"servidores como matrix-synapse tienen que configurarse con los detalles que "
+"se proporcionan aquí."
#: plinth/modules/coturn/__init__.py:64
msgid "Coturn"
-msgstr ""
+msgstr "Coturn"
#: plinth/modules/coturn/__init__.py:65
msgid "VoIP Helper"
-msgstr ""
+msgstr "Asistente VoIP"
#: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22
msgid "TLS domain"
@@ -998,13 +1005,11 @@ msgstr ""
#: plinth/modules/coturn/templates/coturn.html:15
msgid "Use the following URLs to configure your communication server:"
-msgstr ""
+msgstr "Use las siguientes URL para configurar su servidor de comunicación:"
#: plinth/modules/coturn/templates/coturn.html:26
-#, fuzzy
-#| msgid "The following storage devices are in use:"
msgid "Use the following shared authentication secret:"
-msgstr "Se están usando los siguientes dispositivos de almacenamiento:"
+msgstr "Use la clave compartida siguiente:"
#: plinth/modules/datetime/__init__.py:25
msgid ""
@@ -1268,8 +1273,7 @@ msgstr ""
#, python-brace-format
msgid "The public domain name you want to use to reach your {box_name}."
msgstr ""
-"Nombre de dominio público que quiere usar para para identificar su "
-"{box_name}."
+"Nombre de dominio público que quiere usar para identificar su {box_name}."
#: plinth/modules/dynamicdns/forms.py:43
msgid "Use this option if your provider uses self signed certificates."
@@ -1479,9 +1483,9 @@ msgid ""
"any user with a {box_name} login."
msgstr ""
"Para comunicarse puede usar el cliente web o "
-"cualquier otro cliente XMPP. Cuando se activa, ejabberd está disponible "
-"para cualquier usuario con acceso a {box_name}."
+"cualquier otro "
+"cliente XMPP. Cuando se activa, ejabberd está disponible para cualquier <"
+"a href=\"{users_url}\">usuario con acceso a {box_name}."
#: plinth/modules/ejabberd/__init__.py:69
msgid "ejabberd"
@@ -2042,7 +2046,7 @@ msgstr "Aprenda más..."
#: plinth/modules/help/templates/help_feedback.html:12
#, python-format
msgid "Your feedback will help us improve %(box_name)s!"
-msgstr "¡Tus comentarios nos ayudarán a mejorar %(box_name)s!"
+msgstr "¡Tus comentarios nos ayudarán a mejorar %(box_name)s!"
#: plinth/modules/help/templates/help_feedback.html:18
msgid ""
@@ -2051,27 +2055,21 @@ msgid ""
"\"_blank\"> discussion forum."
msgstr ""
"Haznos saber acerca de funcionalidades que falten, tus apps favoritas y cómo "
-"podemos mejorarlas en nuestro foro de debate."
#: plinth/modules/help/templates/help_feedback.html:26
-#, fuzzy
-#| msgid ""
-#| "If you find any bugs or issues, please use the issue "
-#| "tracker to let our developers know. To report, first check if the "
-#| "issue is already reported and then use the \"New issue\" button."
msgid ""
"If you find any bugs or issues, please use the issue "
"tracker to let our developers know. To report, first check if the issue "
"is already reported and then use the \"New issue\" button."
msgstr ""
-"Si encuentras defectos o incidencias, por favor usa el gestor de "
-"incidencias para informar a nuestros desarrolladores. Comprueba primero "
-"que la incidencia no haya sido informada ya y usa el botón \"Nueva incidencia"
-"\" (\"New issue\")."
+"Si encuentras defectos o incidencias, por favor usa el gestor de incidencias para informar a nuestros desarrolladores. "
+"Compruebe primero que la incidencia no haya sido ya informada y use luego el "
+"botón \"Nueva incidencia\"."
#: plinth/modules/help/templates/help_feedback.html:36
msgid "Thank you!"
@@ -2139,7 +2137,7 @@ msgid ""
"using %(box_name)s, you can ask for help from our community of users and "
"contributors."
msgstr ""
-"Si no logra hacer algo o tiene problemas usando %(box_name)s puede pedir "
+"Si no logra hacer algo o tiene problemas usando %(box_name)s puede pedir "
"ayuda de la comunidad de usuarios y contribuyentes."
#: plinth/modules/help/templates/help_support.html:20
@@ -2167,22 +2165,17 @@ msgid "Status Log"
msgstr "Registro de estado"
#: plinth/modules/help/templates/statuslog.html:13
-#, fuzzy, python-format
-#| msgid ""
-#| "These are the last %(num_lines)s lines of the status log for this web "
-#| "interface. If you want to report a bug, please use the bug tracker and "
-#| "attach this status log to the bug report."
+#, python-format
msgid ""
"These are the last %(num_lines)s lines of the status log for this web "
"interface. If you want to report a bug, please use the bug tracker and "
"attach this status log to the bug report."
msgstr ""
-"Éstas son las últimas %(num_lines)s líneas del registro de estado. Si quiere "
-"informar de un defecto, por favor utilice el gestor de defectos y adjunte este "
-"registro de estado al informe."
+"Éstas son las últimas %(num_lines)s líneas del registro de estado para esta "
+"interfaz web. Si quiere informar de un defecto, por favor utilice el gestor de "
+"defectos y adjunte este registro de estado al informe."
#: plinth/modules/help/templates/statuslog.html:24
msgid ""
@@ -2674,7 +2667,7 @@ msgid ""
"Matrix user IDs will look like @username:domainname."
msgstr ""
"Es necesario configurar el servicio Matrix para un dominio, de forma que "
-"quien use otro servidor Matrix pueda acceder a quien esté en este servidor "
+"quien use otro servidor Matrix pueda acceder a quien esté en este servidor "
"mediante su nombre de dominio. El ID de usuaria/o será de la forma "
"@username:domainname."
@@ -2707,7 +2700,7 @@ msgid ""
"look like @username:%(domain_name)s. Changing the domain name after "
"the initial setup is currently not supported."
msgstr ""
-"El dominio de su servidor Matrix es %(domain_name)s. La ID de "
+"El dominio de su servidor Matrix es %(domain_name)s. La ID de "
"usuaria/o será parecida a @username:%(domain_name)s. Actualmente no "
"se puede cambiar el nombre de dominio una vez ha sido configurado."
@@ -3075,12 +3068,12 @@ msgid ""
msgstr ""
"Con Monkeysphere puede crear una clave OpenPGP para cada dominio con acceso "
"SSH configurado. Puede subir la clave OpenPGP pública a un servidor de "
-"claves OpenPGP, de forma que quien acceda por SSH a su servidor podrá "
-"verificar la conexión. Para que que se pueda confiar en la clave, al menos "
-"una persona (generalmente el o la propietaria de la máquina) debe firmarla "
-"usando el proceso de firmado habitual de OpenPGP. Consulte la Documentación de "
-"Monkeysphere SSH para más detalles."
+"claves, de forma que quien acceda por SSH a su servidor podrá verificar la "
+"conexión. Para que que se pueda confiar en la clave, al menos una persona ("
+"generalmente el o la propietaria de la máquina) debe firmarla usando el "
+"proceso habitual de OpenPGP. Consulte la Documentación de Monkeysphere SSH para más "
+"detalles."
#: plinth/modules/monkeysphere/__init__.py:27
msgid ""
@@ -3277,7 +3270,7 @@ msgstr "Mumblefly"
#: plinth/modules/mumble/manifest.py:60
msgid "Mumla"
-msgstr ""
+msgstr "Mumla"
#: plinth/modules/mumble/views.py:29
msgid "SuperUser password successfully updated."
@@ -4676,8 +4669,8 @@ msgstr ""
"Puede usar Privoxy indicando como proxy en su navegador el nombre de "
"anfitrión de su {box_name} (o la dirección IP) en el puerto 8118. Mientras "
"use Privoxy puede acceder a los detalles de su configuración y a la "
-"documentación en http://config."
-"privoxy.org/ o http://p.p."
+"documentación en http://config.privoxy."
+"org/ o http://p.p."
#: plinth/modules/privoxy/__init__.py:55
msgid "Privoxy"
@@ -5507,7 +5500,7 @@ msgstr "Conservar el máximo número de instantáneas por hora."
#: plinth/modules/snapshot/forms.py:36
msgid "Daily Snapshots Limit"
-msgstr "Límite diario de instantáneas"
+msgstr "Límite diario de instantáneas"
#: plinth/modules/snapshot/forms.py:37
msgid "Keep a maximum of this many daily snapshots."
@@ -5581,11 +5574,7 @@ msgid "Rollback to snapshot #%(number)s"
msgstr "Restaurar a instantánea %(number)s"
#: plinth/modules/snapshot/templates/snapshot_not_supported.html:11
-#, fuzzy, python-format
-#| msgid ""
-#| "Your have a filesystem of type %(fs_type)s. Snapshots "
-#| "are currently only available on %(types_supported)s "
-#| "filesystems."
+#, python-format
msgid ""
"You have a filesystem of type %(fs_type)s. Snapshots are "
"currently only available on %(types_supported)s filesystems."
@@ -5916,7 +5905,7 @@ msgstr "Partición ampliada con éxito."
#: plinth/modules/storage/views.py:90
#, python-brace-format
msgid "{drive_vendor} {drive_model} can be safely unplugged."
-msgstr "Ya puede desconectar {drive_vendor} {drive_model} con seguridad."
+msgstr "Ya puede desconectar {drive_vendor} {drive_model} con seguridad."
#: plinth/modules/storage/views.py:94
msgid "Device can be safely unplugged."
@@ -6013,8 +6002,8 @@ msgid ""
msgstr ""
"El dominio del servidor Tahoe-LAFS es %(domain_name)s. Cambiar el "
"nombre de dominio de FreedomBox hará necesario reinstalar Tahoe-LAFS lo que "
-"implica que PERDERÁ SUS DATOS. Puede acceder a Tahoe-LAFS en https://%(domain_name)s:5678."
+"implica que PERDERÁ SUS DATOS. Puede acceder a Tahoe-LAFS en https://%(domain_name)s:5678."
#: plinth/modules/tahoe/templates/tahoe-post-setup.html:29
msgid "Local introducer"
@@ -6264,7 +6253,7 @@ msgid ""
"desktop application as possible."
msgstr ""
"Tiny Tiny RSS es un lector de noticias (RSS/Atom) y agregador, diseñado para "
-"permitir noticias desde cualquier lugar, mientras mantiene un aspecto de "
+"publicar desde cualquier lugar, a la vez que mantiene un aspecto de "
"aplicación de escritorio en la medida de lo posible."
#: plinth/modules/ttrss/__init__.py:33
@@ -7020,32 +7009,21 @@ msgid "Requested page %(request_path)s was not found."
msgstr "No se encontró la página %(request_path)s solicitada."
#: plinth/templates/404.html:19
-#, fuzzy
-#| msgid ""
-#| "If you believe this missing page should exist, please file a bug at the "
-#| "FreedomBox Service (Plinth) project issue tracker."
msgid ""
"If you believe this missing page should exist, please file a bug at the "
"FreedomBox Service (Plinth) project issue tracker."
msgstr ""
-"Si cree que esta página debería existir, por favor informe del error en el "
-"sistema "
-"de seguimiento de incidentes de FredoomBox."
+"Si cree que esta página debería existir, por favor informe del error en el <"
+"a href=\"https://salsa.debian.org/freedombox-team/freedombox/issues\">"
+"sistema de seguimiento de incidentes de FredoomBox."
#: plinth/templates/500.html:10
msgid "500"
msgstr "500"
#: plinth/templates/500.html:14
-#, fuzzy, python-format
-#| msgid ""
-#| "This is an internal error and not something you caused or can fix. Please "
-#| "report the error on the bug tracker so we can fix it. Also, please "
-#| "attach the status log to the bug "
-#| "report."
+#, python-format
msgid ""
"This is an internal error and not something you caused or can fix. Please "
"report the error on the sistema de seguimiento de incidentes "
-"para que podamos solucionarlo. Por favor, adjunte al informe de error el resgistro de estado."
+"org/freedombox-team/freedombox/issues\">sistema de seguimiento de "
+"incidentes para que podamos solucionarlo. Por favor, adjunte al informe "
+"de error el resgistro de estado."
#: plinth/templates/app-header.html:22
msgid "Installation"
From d31ee29d0e25acfff7d75df4be639af038071ad1 Mon Sep 17 00:00:00 2001
From: Artem
Date: Sun, 17 May 2020 19:11:32 +0000
Subject: [PATCH 37/40] Translated using Weblate (Russian)
Currently translated at 74.8% (946 of 1264 strings)
---
plinth/locale/ru/LC_MESSAGES/django.po | 47 +++++++-------------------
1 file changed, 12 insertions(+), 35 deletions(-)
diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po
index 8163e471b..0a81a1ea1 100644
--- a/plinth/locale/ru/LC_MESSAGES/django.po
+++ b/plinth/locale/ru/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-05-04 19:59-0400\n"
-"PO-Revision-Date: 2020-04-25 14:11+0000\n"
+"PO-Revision-Date: 2020-05-18 22:17+0000\n"
"Last-Translator: Artem \n"
"Language-Team: Russian \n"
@@ -16,9 +16,9 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.0.2-dev\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
+"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.1-dev\n"
#: doc/dev/_templates/layout.html:11
msgid "Page source"
@@ -460,25 +460,13 @@ msgid "Are you sure that you want to remove this repository?"
msgstr "Вы уверены, что хотите удалить этот репозиторий?"
#: plinth/modules/backups/templates/backups_repository_remove.html:19
-#, fuzzy
-#| msgid ""
-#| "\n"
-#| " The remote repository will not be deleted.\n"
-#| " This just removes the repository from the listing on the backup "
-#| "page, you\n"
-#| " can add it again later on.\n"
-#| " "
msgid ""
"The remote repository will not be deleted. This just removes the repository "
"from the listing on the backup page, you can add it again later on."
msgstr ""
-"\n"
-" ......Репозиторий, находящийся на удалённой машине, не может быть "
-"стёрт.\n"
-".....Это только удалит репозиторий из списка на странице резервного "
-"сохранения, ......вы сможете позже снова добавить его. \n"
-"....\n"
-" "
+"Репозиторий, находящийся на удалённой машине, не может быть стёрт. Это "
+"только удалит репозиторий из списка на странице резервного сохранения, вы "
+"сможете позже снова добавить его."
#: plinth/modules/backups/templates/backups_repository_remove.html:31
#, fuzzy
@@ -2835,27 +2823,16 @@ msgid ""
msgstr ""
#: plinth/modules/matrixsynapse/templates/matrix-synapse.html:30
-#, fuzzy, python-format
-#| msgid ""
-#| "\n"
-#| " The configured domain name is using a self-signed certificate.\n"
-#| " Federation with other Matrix Synapse instances requires a valid "
-#| "TLS\n"
-#| " certificate. Please go to Let's\n"
-#| " Encrypt to obtain one.\n"
-#| " "
+#, python-format
msgid ""
"The configured domain name is using a self-signed certificate. Federation "
"with other Matrix Synapse instances requires a valid TLS certificate. Please "
"go to Let's Encrypt to obtain one."
msgstr ""
-"\n"
-" Выбранное доменное имя использует самоподписанный сертификат.\n"
-" Федерация с другими инстанциями Matrix Synapse требует действующего "
-"TLS сертификата.\n"
-" Пожалуйста, посетите Let's\n"
-" Encrypt, чтобы получить его.\n"
-" "
+"Выбранное доменное имя использует самоподписанный сертификат. Федерация с "
+"другими инстанциями Matrix Synapse требует действующего TLS сертификата. "
+"Пожалуйста, посетите Let's Encrypt, "
+"чтобы получить его."
#: plinth/modules/matrixsynapse/views.py:86
msgid "Public registration enabled"
From 3da46d40b9323b81c0574c0e88fb653d1fb9932b Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Mon, 18 May 2020 18:39:09 -0400
Subject: [PATCH 38/40] locale: Update translation strings
Signed-off-by: James Valleroy
---
plinth/locale/bg/LC_MESSAGES/django.po | 159 +++++++++------
plinth/locale/bn/LC_MESSAGES/django.po | 159 +++++++++------
plinth/locale/cs/LC_MESSAGES/django.po | 174 ++++++++++-------
plinth/locale/da/LC_MESSAGES/django.po | 185 +++++++++++-------
plinth/locale/de/LC_MESSAGES/django.po | 196 +++++++++++--------
plinth/locale/django.pot | 159 +++++++++------
plinth/locale/el/LC_MESSAGES/django.po | 169 ++++++++++------
plinth/locale/es/LC_MESSAGES/django.po | 203 ++++++++++++--------
plinth/locale/fa/LC_MESSAGES/django.po | 168 +++++++++-------
plinth/locale/fake/LC_MESSAGES/django.po | 185 +++++++++++-------
plinth/locale/fr/LC_MESSAGES/django.po | 177 ++++++++++-------
plinth/locale/gl/LC_MESSAGES/django.po | 159 +++++++++------
plinth/locale/gu/LC_MESSAGES/django.po | 164 +++++++++-------
plinth/locale/hi/LC_MESSAGES/django.po | 173 ++++++++++-------
plinth/locale/hu/LC_MESSAGES/django.po | 174 ++++++++++-------
plinth/locale/id/LC_MESSAGES/django.po | 172 ++++++++++-------
plinth/locale/it/LC_MESSAGES/django.po | 166 +++++++++-------
plinth/locale/ja/LC_MESSAGES/django.po | 159 +++++++++------
plinth/locale/kn/LC_MESSAGES/django.po | 159 +++++++++------
plinth/locale/lt/LC_MESSAGES/django.po | 159 +++++++++------
plinth/locale/nb/LC_MESSAGES/django.po | 174 ++++++++++-------
plinth/locale/nl/LC_MESSAGES/django.po | 177 ++++++++++-------
plinth/locale/pl/LC_MESSAGES/django.po | 166 +++++++++-------
plinth/locale/pt/LC_MESSAGES/django.po | 161 ++++++++++------
plinth/locale/ru/LC_MESSAGES/django.po | 181 ++++++++++-------
plinth/locale/sl/LC_MESSAGES/django.po | 159 +++++++++------
plinth/locale/sr/LC_MESSAGES/django.po | 159 +++++++++------
plinth/locale/sv/LC_MESSAGES/django.po | 182 +++++++++++-------
plinth/locale/ta/LC_MESSAGES/django.po | 159 +++++++++------
plinth/locale/te/LC_MESSAGES/django.po | 185 +++++++++++-------
plinth/locale/tr/LC_MESSAGES/django.po | 181 ++++++++++-------
plinth/locale/uk/LC_MESSAGES/django.po | 164 +++++++++-------
plinth/locale/zh_Hans/LC_MESSAGES/django.po | 181 ++++++++++-------
33 files changed, 3416 insertions(+), 2232 deletions(-)
diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po
index 5db0784f8..751392cf1 100644
--- a/plinth/locale/bg/LC_MESSAGES/django.po
+++ b/plinth/locale/bg/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2019-10-12 14:52+0000\n"
"Last-Translator: Nevena Mircheva \n"
"Language-Team: Bulgarian instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4252,6 +4262,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -4680,14 +4694,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4695,14 +4709,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4781,20 +4795,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -4802,15 +4816,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -4838,45 +4856,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr ""
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -4937,7 +4951,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4945,96 +4959,107 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr ""
@@ -5444,11 +5469,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox"
msgid "FreedomBox Updated"
@@ -5500,7 +5533,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr ""
@@ -5517,11 +5550,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po
index 6d07c4834..f0527da62 100644
--- a/plinth/locale/bn/LC_MESSAGES/django.po
+++ b/plinth/locale/bn/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -26,27 +26,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
-#: plinth/daemon.py:70
+#: plinth/daemon.py:85
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
-#: plinth/daemon.py:96
+#: plinth/daemon.py:111
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
-#: plinth/daemon.py:99
+#: plinth/daemon.py:114
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
-#: plinth/daemon.py:167
+#: plinth/daemon.py:182
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
-#: plinth/daemon.py:169
+#: plinth/daemon.py:184
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@@ -667,6 +667,7 @@ msgid ""
msgstr ""
#: plinth/modules/cockpit/__init__.py:59 plinth/modules/cockpit/manifest.py:12
+#: plinth/modules/performance/manifest.py:11
msgid "Cockpit"
msgstr ""
@@ -695,7 +696,7 @@ msgstr ""
#: plinth/modules/config/__init__.py:57 plinth/modules/dynamicdns/views.py:29
#: plinth/modules/names/templates/names.html:29
#: plinth/modules/names/templates/names.html:43
-#: plinth/modules/snapshot/views.py:26
+#: plinth/modules/snapshot/views.py:28
#: plinth/modules/tahoe/templates/tahoe-pre-setup.html:24
msgid "Configure"
msgstr ""
@@ -827,7 +828,7 @@ msgstr ""
msgid "Coquelicot"
msgstr ""
-#: plinth/modules/coquelicot/__init__.py:47 plinth/modules/samba/__init__.py:63
+#: plinth/modules/coquelicot/__init__.py:47
msgid "File Sharing"
msgstr ""
@@ -1405,17 +1406,17 @@ msgstr ""
msgid "Firewall"
msgstr ""
-#: plinth/modules/firewall/components.py:118
+#: plinth/modules/firewall/components.py:124
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
-#: plinth/modules/firewall/components.py:126
+#: plinth/modules/firewall/components.py:132
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
-#: plinth/modules/firewall/components.py:131
+#: plinth/modules/firewall/components.py:137
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@@ -3276,7 +3277,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr ""
@@ -3968,6 +3969,15 @@ msgid ""
"SshOverPageKite/\">instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4245,6 +4255,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -4671,14 +4685,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4686,14 +4700,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4772,20 +4786,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -4793,15 +4807,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -4829,45 +4847,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr ""
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -4928,7 +4942,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4936,96 +4950,107 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr ""
@@ -5435,11 +5460,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
msgid "FreedomBox Updated"
msgstr ""
@@ -5489,7 +5522,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr ""
@@ -5506,11 +5539,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po
index 2edce3b3b..a3139c281 100644
--- a/plinth/locale/cs/LC_MESSAGES/django.po
+++ b/plinth/locale/cs/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-04-01 00:36+0000\n"
"Last-Translator: Pavel Borecki \n"
"Language-Team: Czech %(service_name)s is available only on internal networks."
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
"Služba %(service_name)s je k dispozici pouze na vnitřních sítích."
-#: plinth/modules/firewall/components.py:126
+#: plinth/modules/firewall/components.py:132
#, fuzzy, python-brace-format
#| msgid "%(service_name)s is available only on internal networks."
msgid "Port {name} ({details}) available for external networks"
msgstr ""
"Služba %(service_name)s je k dispozici pouze na vnitřních sítích."
-#: plinth/modules/firewall/components.py:131
+#: plinth/modules/firewall/components.py:137
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@@ -3791,7 +3792,7 @@ msgstr "Rozhraní"
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr "Popis"
@@ -4566,6 +4567,17 @@ msgstr ""
"Viz instrukce"
"a> pro nastavení SSH klienta"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "Nastavení systému"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Restartovat nebo vypnout systém."
@@ -4916,6 +4928,12 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Distributed File Storage"
+msgid "Network File Storage"
+msgstr "Distribuované souborové úložiště"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5420,7 +5438,7 @@ msgstr "Upravit sdílení"
msgid "Share deleted."
msgstr "Sdílení smazáno."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
@@ -5430,7 +5448,7 @@ msgstr ""
"souborového systému btrfs. Ty je možné použít pro vrácení systému do "
"dřívějšího funkčního stavu v případě nechtěných změn."
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5441,7 +5459,7 @@ msgstr ""
"osy) a také před a po instalaci software. Nejstarší zachycené stavy budou "
"automaticky mazány podle níže uvedených nastavení."
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups, protože mohou být ukládány pouze na stejném oddílu, "
"jako živá data. "
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "Zachycené stavy datového úložiště"
@@ -5540,20 +5558,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "Nevratně smazat tyto zachycené stavy?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "Počet"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "Datum"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "Smazat zachycené stavy"
@@ -5561,15 +5579,19 @@ msgstr "Smazat zachycené stavy"
msgid "Create Snapshot"
msgstr "Pořídit zachycený stav"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "Obnovit ze zálohy"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "aktivní"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "Vrátit k zachycenému stavu č. %(number)s"
@@ -5606,45 +5628,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "Vrátit k zachycenému stavu č. %(number)s"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr "Spravovat zachycené stavy"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "Zachycený stav pořízen."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr "Nastavení zachycování stavů úložiště aktualizováno"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "Chyba akce: {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr "Všechny zachycené stavy smazány"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr "Označené zachycené stavy smazány"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr "Zachycený stav je používán. Zkuste to později."
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "Vráceno zpět do podoby zachyceného stavu č. {number}."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr "Pro dokončení obnovy ze zálohy je třeba systém restartovat."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "Vrátit do podoby zachyceného stavu"
@@ -5713,7 +5731,7 @@ msgstr "Sdružené přihlášení (SSO)"
msgid "Login"
msgstr "Přihlášení"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5724,88 +5742,88 @@ msgstr ""
"{box_name}. Lze zobrazit úložná zařízení, která jsou využívána, připojovat a "
"odpojovat ta vyjímatelná."
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr "Úložiště"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} bajtů"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr "Operace se nezdařila."
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr "Operace byla zrušena."
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr "Toto zařízení už je odpojováno (umount)."
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr "Operace není podporována z důvodu chybějící podpory ovladače/nástroje."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr "Časový limit aplikace překročen."
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "Operace by probudila disk který je v režimu hlubokého spánku."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr "Pokus o odpojení zařízení které je zaneprázdněno."
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr "Operace už byla zrušena."
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr "Chybí oprávnění pro provedení požadované operace."
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr "Toto zařízení je už připojeno (mount)."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr "Zařízení není připojeno."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr "Není umožněno použít požadovanou volbu."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr "Zařízení je připojeno jiným uživatelem."
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, fuzzy, no-python-format, python-brace-format
#| msgid ""
#| "Warning: Low space on system partition ({percent_used}% used, "
@@ -5815,10 +5833,21 @@ msgstr ""
"Varování: Dochází volné místo na systémovém oddílu ({percent_used}% využito, "
"{free_space} volné)."
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid repository name."
@@ -6326,11 +6355,19 @@ msgid "Check for and apply the latest software and security updates."
msgstr ""
"Zjistit dostupnost a uplatnit nejnovější aktualizace a opravy zabezpečení."
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "Aktualizovat"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox Foundation"
msgid "FreedomBox Updated"
@@ -6391,7 +6428,7 @@ msgstr "Vyp/zap. záznamy událostí při nedávných aktualizacích"
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr "Ruční aktualizace"
@@ -6408,11 +6445,11 @@ msgstr "Automatické aktualizace zapnuty"
msgid "Automatic upgrades disabled"
msgstr "Automatické aktualizace vypnuty"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "Proces přechodu na novější verze zahájen."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "Spouštění přechodu na novější verzi se nezdařilo."
@@ -7394,6 +7431,12 @@ msgstr "%(percentage)s%% dokončeno"
msgid "Gujarati"
msgstr "gudžarátština"
+#~ msgid "active"
+#~ msgstr "aktivní"
+
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Všechny zachycené stavy smazány"
+
#~ msgid "Enable application"
#~ msgstr "Zapnout aplikaci"
@@ -8173,9 +8216,6 @@ msgstr "gudžarátština"
#~ "Může být jako jeden z nich. Mnohé ze služeb které používáte na webu mohou "
#~ "brzy být u vás doma a pod vaší kontrolou!"
-#~ msgid "System Configuration"
-#~ msgstr "Nastavení systému"
-
#~ msgid ""
#~ "Here you can administrate the underlying system of your %(box_name)s."
#~ msgstr "Zde je možné spravovat systém, pohánějící váš %(box_name)s."
diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po
index 7da85534c..22d8c707b 100644
--- a/plinth/locale/da/LC_MESSAGES/django.po
+++ b/plinth/locale/da/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2016-07-03 21:44+0000\n"
"Last-Translator: Mikkel Kirkgaard Nielsen \n"
"Language-Team: Danish instruktioner for opsætning af SSH-klient"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "Systemkonfiguration"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Genstart eller luk systemet."
@@ -4969,6 +4981,12 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Network Time Server"
+msgid "Network File Storage"
+msgstr "Netværkstidsserver"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5470,14 +5488,14 @@ msgstr "Rediger Bruger"
msgid "Share deleted."
msgstr "{name} slettet."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5485,14 +5503,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
#, fuzzy
#| msgid "Create User"
msgid "Storage Snapshots"
@@ -5585,20 +5603,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "Slet bruger permanent?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Delete Snapshots"
@@ -5610,17 +5628,19 @@ msgstr "Slet %(name)s"
msgid "Create Snapshot"
msgstr "Opret Bruger"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-#, fuzzy
-#| msgid "Inactive"
-msgid "active"
-msgstr "Inaktiv"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -5648,53 +5668,47 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
#, fuzzy
#| msgid "Create User"
msgid "Manage Snapshots"
msgstr "Opret Bruger"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
#, fuzzy
#| msgid "Configuration updated"
msgid "Storage snapshots configuration updated"
msgstr "Konfiguration opdateret"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "Fejl under handling: {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-#, fuzzy
-#| msgid "Delete %(name)s"
-msgid "Deleted all snapshots"
-msgstr "Slet %(name)s"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Deleted selected snapshots"
msgstr "Slet %(name)s"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -5761,7 +5775,7 @@ msgstr ""
msgid "Login"
msgstr "Log ind"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5769,109 +5783,120 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
#, fuzzy
#| msgid "reStore"
msgid "Storage"
msgstr "reStore"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, fuzzy, python-brace-format
#| msgid "{disk_size} bytes"
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size} bytes"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, fuzzy, python-brace-format
#| msgid "{disk_size} KiB"
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, fuzzy, python-brace-format
#| msgid "{disk_size} MiB"
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, fuzzy, python-brace-format
#| msgid "{disk_size} GiB"
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, fuzzy, python-brace-format
#| msgid "{disk_size} TiB"
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
#, fuzzy
#| msgid "repro service is running"
msgid "The device is already unmounting."
msgstr "repro-tjenesten er aktiv"
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
#, fuzzy
#| msgid "This service already exists"
msgid "The device is already mounted."
msgstr "Denne tjeneste eksisterer allerede"
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
#, fuzzy
#| msgid "repro service is not running"
msgid "The device is not mounted."
msgstr "repro-tjenesten er ikke aktiv"
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid hostname"
@@ -6350,11 +6375,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "Opdater"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox Manual"
msgid "FreedomBox Updated"
@@ -6422,7 +6455,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
#, fuzzy
#| msgid "Last update"
msgid "Manual update"
@@ -6442,11 +6475,11 @@ msgstr "Automatisk opdatering aktiveret"
msgid "Automatic upgrades disabled"
msgstr "Automatisk opdatering deaktiveret"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "Opdateringsprocessen er startet."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "Kunne ikke starte opdatering."
@@ -7415,6 +7448,16 @@ msgstr "%(percentage)s%% færdig"
msgid "Gujarati"
msgstr ""
+#, fuzzy
+#~| msgid "Inactive"
+#~ msgid "active"
+#~ msgstr "Inaktiv"
+
+#, fuzzy
+#~| msgid "Delete %(name)s"
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Slet %(name)s"
+
#~ msgid "Enable application"
#~ msgstr "Aktiver applikation"
@@ -7956,9 +7999,6 @@ msgstr ""
#~ "portaler? Sådan en kan den også være. Mange af de tjenester du bruger på "
#~ "webbet kan snart være tilgængelig her og under din kontrol!"
-#~ msgid "System Configuration"
-#~ msgstr "Systemkonfiguration"
-
#, fuzzy
#~| msgid "Here you can administrate the underlying system of your {box_name}."
#~ msgid ""
@@ -8249,9 +8289,6 @@ msgstr ""
#~ msgid "Enable service discovery"
#~ msgstr "Aktiver tjenestesøgning"
-#~ msgid "Network Time Server"
-#~ msgstr "Netværkstidsserver"
-
#~ msgid "BitTorrent (Deluge)"
#~ msgstr "BitTorrent (Deluge)"
diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po
index 43462e349..760826730 100644
--- a/plinth/locale/de/LC_MESSAGES/django.po
+++ b/plinth/locale/de/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-05-11 10:41+0000\n"
"Last-Translator: Michael Breidenbach \n"
"Language-Team: German to let our developers know. To report, first check if the issue "
"is already reported and then use the \"New issue\" button."
msgstr ""
-"Wenn Sie Fehler oder Probleme finden, verwenden Sie bitte den issue tracker, um unsere Entwickler darüber zu informieren. Um "
-"einen Bericht zu erstellen, überprüfen Sie zunächst, ob das Problem bereits "
-"gemeldet wurde und klicken Sie dann auf die Schaltfläche \"New issue\"."
+"Wenn Sie Fehler oder Probleme finden, verwenden Sie bitte den issue tracker, um unsere Entwickler darüber zu informieren. "
+"Um einen Bericht zu erstellen, überprüfen Sie zunächst, ob das Problem "
+"bereits gemeldet wurde und klicken Sie dann auf die Schaltfläche \"New issue"
+"\"."
#: plinth/modules/help/templates/help_feedback.html:36
msgid "Thank you!"
@@ -3850,7 +3852,7 @@ msgstr "Schnittstelle"
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr "Beschreibung"
@@ -4647,6 +4649,17 @@ msgstr ""
"Siehe SSH-Client Konfigurationsanweisungen"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "System-Konfiguration"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Neu starten oder das System herunterfahren."
@@ -5007,6 +5020,12 @@ msgstr "Zugriff auf die privaten Freigaben"
msgid "Samba"
msgstr "Samba"
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Network Time Server"
+msgid "Network File Storage"
+msgstr "Netzwerk Zeit-Server"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -5490,7 +5509,7 @@ msgstr "Freigabe bearbeiten"
msgid "Share deleted."
msgstr "Freigabe gelöscht."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
@@ -5501,7 +5520,7 @@ msgstr ""
"unerwünschte Änderungen in einen vorherigen bekannten guten Zustand zurück "
"zu versetzen."
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5513,7 +5532,7 @@ msgstr ""
"Software. Ältere Schnappschüsse werden gemäß den Einstellungen unten "
"automatisch bereinigt."
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for Datensicherungen, da sie nur auf derselben "
"Partition gespeichert werden können. "
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "Speicherauszüge"
@@ -5612,20 +5631,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "Folgenden Speicherauszug dauerhaft löschen?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "Nummer"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "Datum"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "Speicherauszüge löschen"
@@ -5633,15 +5652,19 @@ msgstr "Speicherauszüge löschen"
msgid "Create Snapshot"
msgstr "Speicherauszug anlegen"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "Zurücksetzen"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "aktiv"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "Zurücksetzen auf Speicherauszug #%(number)s"
@@ -5675,48 +5698,44 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "Zurücksetzen auf Speicherauszug #%(number)s"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr "Verwalten der Speicherauszüge"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "Speicherauszug erstellt."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr "Konfiguration der Speicherauszüge aktualisiert"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "Aktionsfehler: {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr "Alle Schnappschüsse wurden gelöscht"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr "Ausgewählte Schnappschüsse gelöscht"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
"Schnappschüsse ist derzeit im Gebrauch. Bitte versuchen Sie es später noch "
"einmal."
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "Zurückgesetzt auf Speicherauszug #{number}."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
"Das System muss neu gestartet werden, um das Zurücksetzen abzuschließen."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "Zurücksetzen auf Speicherauszug"
@@ -5787,7 +5806,7 @@ msgstr "Einmal-Anmeldung"
msgid "Login"
msgstr "Anmelden"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5799,101 +5818,112 @@ msgstr ""
"Speichermedien einsehen, Wechselmedien einbinden und aushängen, die Root-"
"Partition erweitern usw."
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr "Speicher"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} Bytes"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr "Der Vorgang schlug fehl."
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr "Der Vorgang wurde abgebrochen."
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr "Das Gerät wird bereits ausgehängt."
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
"Der Vorgang ist wegen fehlender Treiber-/Werkzeugunterstützung nicht möglich."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr "Der Vorgang beendet wegen Zeitüberschreitung."
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
"Dieser Vorgang würde ein Gerät aufwecken, dass sich in einem Tiefschlaf-"
"Zustand befindet."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr "Es wird versucht, ein Gerät auszuhängen, das beschäftigt ist."
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr "Dieser Vorgang wurde bereits abgebrochen."
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr "Nicht autorisiert, um den gewünschten Vorgang auszuführen."
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr "Dieses Gerät ist bereits eingebunden."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr "Das Gerät ist nicht eingebunden."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr "Die gewünschte Option ist nicht gestattet."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr "Das Gerät ist von einem anderen Benutzer eingebunden."
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
"Geringer Speicherplatz auf der Systempartition: {percent_used}% belegt, "
"{free_space} verfügbar."
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr "Wenig Plattenspeicherplatz"
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr "Ungültiger Verzeichnisname."
@@ -6380,11 +6410,19 @@ msgstr ""
"Prüfen Sie die neuesten Software- und Sicherheitsupdates und installieren "
"Sie diese."
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "Aktualisieren"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
msgid "FreedomBox Updated"
msgstr "FreedomBox aktualisiert"
@@ -6441,7 +6479,7 @@ msgstr "Umschalten der letzten Update-Protokolle"
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr "Manuelles Update"
@@ -6458,11 +6496,11 @@ msgstr "Automatische Systemaktualisierung aktivieren"
msgid "Automatic upgrades disabled"
msgstr "Automatische Aktualisierungen ausgeschaltet"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "Aktualisierung gestartet."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "Starten der Aktualisierung fehlgeschlagen."
@@ -7129,10 +7167,10 @@ msgid ""
"the status log to the bug report."
msgstr ""
"Dies ist ein interner Fehler und nicht etwas, das Sie verursacht haben oder "
-"beheben können. Bitte melden Sie den Fehler im online "
-"Fehlermelder, so dass wir ihn beheben können. Fügen Sie auch das Statusprotokoll dem Fehlerbericht bei."
+"beheben können. Bitte melden Sie den Fehler im online Fehlermelder, so "
+"dass wir ihn beheben können. Fügen Sie auch das Statusprotokoll dem Fehlerbericht bei."
#: plinth/templates/app-header.html:22
msgid "Installation"
@@ -7404,6 +7442,12 @@ msgstr "%(percentage)s %% abgeschlossen"
msgid "Gujarati"
msgstr "Gujarati"
+#~ msgid "active"
+#~ msgstr "aktiv"
+
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Alle Schnappschüsse wurden gelöscht"
+
#~ msgid "Enable application"
#~ msgstr "Anwendung aktivieren"
@@ -8187,9 +8231,6 @@ msgstr "Gujarati"
#~ "möglich Dienste selbst zu betreiben und damit wieder Kontrolle über die "
#~ "eigenen Daten zu erlangen!"
-#~ msgid "System Configuration"
-#~ msgstr "System-Konfiguration"
-
#~ msgid ""
#~ "Here you can administrate the underlying system of your %(box_name)s."
#~ msgstr "Hier können Sie das Basissystem Ihrer %(box_name)s verwalten."
@@ -8527,9 +8568,6 @@ msgstr "Gujarati"
#~ msgid "Enable service discovery"
#~ msgstr "Dienste-Erkennung einschalten"
-#~ msgid "Network Time Server"
-#~ msgstr "Netzwerk Zeit-Server"
-
#~ msgid "BitTorrent (Deluge)"
#~ msgstr "BitTorrent (Deluge)"
diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot
index ee36e3b3d..9f02dec18 100644
--- a/plinth/locale/django.pot
+++ b/plinth/locale/django.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -25,27 +25,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
-#: plinth/daemon.py:70
+#: plinth/daemon.py:85
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
-#: plinth/daemon.py:96
+#: plinth/daemon.py:111
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
-#: plinth/daemon.py:99
+#: plinth/daemon.py:114
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
-#: plinth/daemon.py:167
+#: plinth/daemon.py:182
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
-#: plinth/daemon.py:169
+#: plinth/daemon.py:184
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@@ -666,6 +666,7 @@ msgid ""
msgstr ""
#: plinth/modules/cockpit/__init__.py:59 plinth/modules/cockpit/manifest.py:12
+#: plinth/modules/performance/manifest.py:11
msgid "Cockpit"
msgstr ""
@@ -694,7 +695,7 @@ msgstr ""
#: plinth/modules/config/__init__.py:57 plinth/modules/dynamicdns/views.py:29
#: plinth/modules/names/templates/names.html:29
#: plinth/modules/names/templates/names.html:43
-#: plinth/modules/snapshot/views.py:26
+#: plinth/modules/snapshot/views.py:28
#: plinth/modules/tahoe/templates/tahoe-pre-setup.html:24
msgid "Configure"
msgstr ""
@@ -826,7 +827,7 @@ msgstr ""
msgid "Coquelicot"
msgstr ""
-#: plinth/modules/coquelicot/__init__.py:47 plinth/modules/samba/__init__.py:63
+#: plinth/modules/coquelicot/__init__.py:47
msgid "File Sharing"
msgstr ""
@@ -1404,17 +1405,17 @@ msgstr ""
msgid "Firewall"
msgstr ""
-#: plinth/modules/firewall/components.py:118
+#: plinth/modules/firewall/components.py:124
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
-#: plinth/modules/firewall/components.py:126
+#: plinth/modules/firewall/components.py:132
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
-#: plinth/modules/firewall/components.py:131
+#: plinth/modules/firewall/components.py:137
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@@ -3275,7 +3276,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr ""
@@ -3967,6 +3968,15 @@ msgid ""
"SshOverPageKite/\">instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4244,6 +4254,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -4670,14 +4684,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4685,14 +4699,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4771,20 +4785,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -4792,15 +4806,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -4828,45 +4846,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr ""
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -4927,7 +4941,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4935,96 +4949,107 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr ""
@@ -5434,11 +5459,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
msgid "FreedomBox Updated"
msgstr ""
@@ -5488,7 +5521,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr ""
@@ -5505,11 +5538,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po
index 8b3e378b7..bac1b6ab8 100644
--- a/plinth/locale/el/LC_MESSAGES/django.po
+++ b/plinth/locale/el/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-01-25 17:21+0000\n"
"Last-Translator: Nektarios Katakis \n"
"Language-Team: Greek Οδηγίες"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Επανεκκίνηση ή κλείσιμο του συστήματος."
@@ -5026,6 +5036,12 @@ msgstr "Πρόσβαση στα ιδιωτικά μερίσματα"
msgid "Samba"
msgstr "Samba"
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Distributed File Storage"
+msgid "Network File Storage"
+msgstr "Διανεμημένος χώρος αποθήκευσης αρχείων"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -5530,7 +5546,7 @@ msgstr "Επεξεργασία μερίσματος"
msgid "Share deleted."
msgstr "Το μέρισμα διαγράφηκε."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
@@ -5541,7 +5557,7 @@ msgstr ""
"σε μια προηγουμένως γνωστή καλή κατάσταση σε περίπτωση ανεπιθύμητων αλλαγών "
"στο σύστημα."
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5552,7 +5568,7 @@ msgstr ""
"και επίσης πριν και μετά από μια εγκατάσταση λογισμικού. Τα παλαιότερα "
"στιγμιότυπα θα καθαρίζονται αυτόματα σύμφωνα με τις παρακάτω ρυθμίσεις."
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for αντίγραφα ασφαλείας επειδή "
"μπορούν να αποθηκευτούν μόνο στο ίδιο διαμέρισμα του δίσκου. "
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "Στιγμιότυπα συστήματος αρχείων"
@@ -5651,20 +5667,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "Να διαγραφούν οριστικά τα παρακάτω στιγμιότυπα;"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "Αριθμός"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "Ημερομηνία"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "Διαγραφή στιγμιότυπων"
@@ -5672,15 +5688,19 @@ msgstr "Διαγραφή στιγμιότυπων"
msgid "Create Snapshot"
msgstr "Δημιουργία στιγμιότυπου"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "Επαναφορά"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "Ενεργό"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "Επαναφορά στο στιγμιότυπο #%(number)s"
@@ -5718,48 +5738,44 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "Επαναφορά στο στιγμιότυπο #%(number)s"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr "Διαχείριση στιγμιότυπων"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "Το στιγμιότυπο δημιουργήθηκε."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr "Η ρύθμιση παραμέτρων των στιγμιότυπων αποθήκευσης Ενημερώθηκε"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "Σφάλμα ενέργειας: {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr "Διαγραφή όλων των στιγμιότυπων"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr "Διαγράφηκαν επιλεγμένα στιγμιότυπα"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
"Το στιγμιότυπο χρησιμοποιείται αυτήν τη στιγμή. Παρακαλώ προσπαθήστε ξανά "
"αργότερα."
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "Πραγματοποιήθηκε επαναφορά στο στιγμιότυπο #{number}."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
"Πρέπει να γίνει επανεκκίνηση του συστήματος για να ολοκληρωθεί η επαναφορά."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "Επαναφορά σε στιγμιότυπο"
@@ -5831,7 +5847,7 @@ msgstr "Single Sign On"
msgid "Login"
msgstr "Είσοδος"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5843,89 +5859,89 @@ msgstr ""
"χρησιμοποιούνται προς το παρόν, να προσθέσετε και να αφαιρέσετε αφαιρούμενα "
"μέσα, επεκτείνετε το root διαμέρισμα κλπ."
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr "Χώρος Αποθήκευσης"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} bytes"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr "Η ενέργεια απέτυχε."
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr "Η ενέργεια ακυρώθηκε."
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr "Η συσκευή είναι ήδη προς αφαίρεση."
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr "Η ενέργεια δεν υποστηρίζεται λόγω μη υποστήριξης προγραμματος οδηγού."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr "Η ενέργεια απέτυχε επειδή διήρκησε πολύ χρόνο."
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
"Η ενέργεια θα ξυπνήσει ένα δίσκο που είναι σε μια βαθιά κατάσταση ύπνου."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr "Γίνεται προσπάθεια αφαίρεσης μιας συσκευής που είναι απασχολημένη."
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr "Η ενέργια έχει ήδη ακυρωθεί."
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr "Δεν έχετε εξουσιοδότηση για την εκτέλεση της συγκεκριμένης ενέργειας."
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr "Η συσκευή έχει ήδη προστεθεί."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr "Η συσκευή δεν είναι τοποθετημένη."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr "Δεν έχετε εξουσιοδότηση για την εκτέλεση της συγκεκριμένης ενέργειας."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr "Η συσκευή έχει ήδη προστεθεί από άλλο χρήστη."
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, fuzzy, no-python-format, python-brace-format
#| msgid ""
#| "Warning: Low space on system partition ({percent_used}% used, "
@@ -5935,10 +5951,21 @@ msgstr ""
"Προειδοποίηση: χαμηλός χώρος στο διαμέρισμα του συστήματος ({percent_used}% "
"χρησιμοποιείται, {free_space} είναι ελεύθερος)."
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr "Το όνομα καταλόγου δεν είναι έγκυρο."
@@ -6431,11 +6458,19 @@ msgid "Check for and apply the latest software and security updates."
msgstr ""
"Ελέγξτε και εφαρμόστε τις πιο πρόσφατες ενημερώσεις λογισμικού και ασφαλείας."
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "Ενημερωμένη έκδοση"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox Foundation"
msgid "FreedomBox Updated"
@@ -6495,7 +6530,7 @@ msgstr "Ενεργοποίηση αρχείων καταγραφής πρόσφ
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr "Μη αυτόματη ενημέρωση"
@@ -6512,11 +6547,11 @@ msgstr "Oι αυτόματες ενημερώσεις ενεργοποιήθηκ
msgid "Automatic upgrades disabled"
msgstr "Oι αυτόματες ενημερώσεις απενεργοποιήθηκαν"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "Ξεκίνησε η διαδικασία αναβάθμισης."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "Η εκκίνηση της αναβάθμισης απέτυχε."
@@ -7509,6 +7544,12 @@ msgstr "ολοκληρώθηκε το %(percentage)s%%"
msgid "Gujarati"
msgstr "Gujarati"
+#~ msgid "active"
+#~ msgstr "Ενεργό"
+
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Διαγραφή όλων των στιγμιότυπων"
+
#~ msgid "Enable application"
#~ msgstr "Ενεργοποίηση εφαρμογής"
diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po
index 66f1ad1f0..0330c17fa 100644
--- a/plinth/locale/es/LC_MESSAGES/django.po
+++ b/plinth/locale/es/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-05-18 22:17+0000\n"
"Last-Translator: Luis A. Arizmendi \n"
"Language-Team: Spanish user with a {box_name} login."
msgstr ""
"Para comunicarse puede usar el cliente web o "
-"cualquier otro "
-"cliente XMPP. Cuando se activa, ejabberd está disponible para cualquier <"
-"a href=\"{users_url}\">usuario con acceso a {box_name}."
+"cualquier otro cliente XMPP. Cuando se activa, ejabberd está disponible "
+"para cualquier usuario con acceso a {box_name}."
#: plinth/modules/ejabberd/__init__.py:69
msgid "ejabberd"
@@ -1592,17 +1593,17 @@ msgstr ""
msgid "Firewall"
msgstr "Cortafuegos"
-#: plinth/modules/firewall/components.py:118
+#: plinth/modules/firewall/components.py:124
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr "Puerto {name}{details} disponible para redes internas"
-#: plinth/modules/firewall/components.py:126
+#: plinth/modules/firewall/components.py:132
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr "Puerto {name}{details} disponible para redes externas"
-#: plinth/modules/firewall/components.py:131
+#: plinth/modules/firewall/components.py:137
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Puerto {name}{details} no disponible para redes externas"
@@ -2065,9 +2066,9 @@ msgid ""
"tracker to let our developers know. To report, first check if the issue "
"is already reported and then use the \"New issue\" button."
msgstr ""
-"Si encuentras defectos o incidencias, por favor usa el gestor de incidencias para informar a nuestros desarrolladores. "
+"Si encuentras defectos o incidencias, por favor usa el gestor de incidencias para informar a nuestros desarrolladores. "
"Compruebe primero que la incidencia no haya sido ya informada y use luego el "
"botón \"Nueva incidencia\"."
@@ -3069,8 +3070,8 @@ msgstr ""
"Con Monkeysphere puede crear una clave OpenPGP para cada dominio con acceso "
"SSH configurado. Puede subir la clave OpenPGP pública a un servidor de "
"claves, de forma que quien acceda por SSH a su servidor podrá verificar la "
-"conexión. Para que que se pueda confiar en la clave, al menos una persona ("
-"generalmente el o la propietaria de la máquina) debe firmarla usando el "
+"conexión. Para que que se pueda confiar en la clave, al menos una persona "
+"(generalmente el o la propietaria de la máquina) debe firmarla usando el "
"proceso habitual de OpenPGP. Consulte la Documentación de Monkeysphere SSH para más "
"detalles."
@@ -3798,7 +3799,7 @@ msgstr "Interfaz"
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr "Descripción"
@@ -4580,6 +4581,17 @@ msgstr ""
"Vea las instrucciones para la configuración del cliente SSH"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "Configuración del sistema"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Reiniciar o apagar el sistema."
@@ -4934,6 +4946,12 @@ msgstr "Acceso a los elementos compartidos privados"
msgid "Samba"
msgstr "Samba"
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Network Time Server"
+msgid "Network File Storage"
+msgstr "Servidor NTP"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -5417,7 +5435,7 @@ msgstr "Editar compartición"
msgid "Share deleted."
msgstr "Compartición eliminada."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
@@ -5427,7 +5445,7 @@ msgstr ""
"btrfs. Éstas pueden emplearse para recuperar el sistema a un estado anterior "
"correcto en caso de cambios no deseados."
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5439,7 +5457,7 @@ msgstr ""
"instantáneas más antiguas se eliminarán automáticamente según la siguiente "
"configuración."
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for las copias de seguridad ya que se almacenan en la "
"misma partición. "
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "Almacén de instantáneas"
@@ -5539,20 +5557,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "¿Eliminar las siguientes instantáneas definitivamente?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "Número"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "Fecha"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "Eliminar instantáneas"
@@ -5560,15 +5578,19 @@ msgstr "Eliminar instantáneas"
msgid "Create Snapshot"
msgstr "Crear instantánea"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "Restaurar"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "Activa"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "Restaurar a instantánea %(number)s"
@@ -5601,46 +5623,42 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "Restaurar a instantánea %(number)s"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr "Gestionar instantáneas"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "Instantánea creada."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr "Configuración de almacenamiento de instantáneas actualizada"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "Acción de error: {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr "Eliminar todas las instantáneas"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr "Las instantáneas seleccionadas fueron eliminadas"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
"La instantánea se está usando actualmente. Inténtelo de nuevo más tarde."
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "Sistema restaurado a la instantánea {number}."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr "Debe reiniciar el sistema para completar la restauración."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "Restaurar a instantánea"
@@ -5710,7 +5728,7 @@ msgstr "Inicio de sesión único"
msgid "Login"
msgstr "Inicio de sesión"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5721,98 +5739,109 @@ msgstr ""
"{box_name}. Puede ver el medio de almacenamiento que está usando, montar y "
"desmontar medios extraíbles, ampliar la partición raíz, etc."
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr "Almacén"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} bytes"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr "Falló la operación."
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr "Se ha cancelado la operación."
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr "El dispositivo ya se está desmontando."
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr "No se soporta esta operación por falta de un driver o herramienta."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr "La operación agotó el tiempo."
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "La operación podría activar un disco que está en estado de reposo."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr "Tratando de desmontar un dispositivo ocupado."
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr "Ya se ha cancelado la operación."
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr "No tiene autorización para la operación solicitada."
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr "El dispositivo ya está montado."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr "El dispositivo no está montado."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr "La operación solicitada no está permitida."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr "El dispositivo está ya montado por otro usuario."
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
"Poco espacio en la partición del sistema: {percent_used}% usado, "
"{free_space} libre."
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr "Poco espacio en disco"
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr "Nombre de carpeta no válido."
@@ -6002,8 +6031,8 @@ msgid ""
msgstr ""
"El dominio del servidor Tahoe-LAFS es %(domain_name)s. Cambiar el "
"nombre de dominio de FreedomBox hará necesario reinstalar Tahoe-LAFS lo que "
-"implica que PERDERÁ SUS DATOS. Puede acceder a Tahoe-LAFS en https://%(domain_name)s:5678."
+"implica que PERDERÁ SUS DATOS. Puede acceder a Tahoe-LAFS en https://%(domain_name)s:5678."
#: plinth/modules/tahoe/templates/tahoe-post-setup.html:29
msgid "Local introducer"
@@ -6296,11 +6325,19 @@ msgid "Check for and apply the latest software and security updates."
msgstr ""
"Buscar y aplicar las últimas actualizaciones del software y de seguridad."
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "Actualización"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
msgid "FreedomBox Updated"
msgstr "FreedomBox actualizado"
@@ -6357,7 +6394,7 @@ msgstr "Alternar los registros de las actualizaciones recientes"
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr "Actualización manual"
@@ -6374,11 +6411,11 @@ msgstr "Actualizaciones automáticas activadas"
msgid "Automatic upgrades disabled"
msgstr "Actualizaciones automáticas desactivadas"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "Proceso de actualización iniciado."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "No se ha podido iniciar la actualización."
@@ -7014,9 +7051,9 @@ msgid ""
"FreedomBox Service (Plinth) project issue tracker."
msgstr ""
-"Si cree que esta página debería existir, por favor informe del error en el <"
-"a href=\"https://salsa.debian.org/freedombox-team/freedombox/issues\">"
-"sistema de seguimiento de incidentes de FredoomBox."
+"Si cree que esta página debería existir, por favor informe del error en el "
+"sistema de seguimiento de incidentes de FredoomBox."
#: plinth/templates/500.html:10
msgid "500"
@@ -7303,6 +7340,12 @@ msgstr "%(percentage)s%% completado"
msgid "Gujarati"
msgstr "Gujarati"
+#~ msgid "active"
+#~ msgstr "Activa"
+
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Eliminar todas las instantáneas"
+
#~ msgid "Enable application"
#~ msgstr "Activar aplicación"
@@ -8087,9 +8130,6 @@ msgstr "Gujarati"
#~ "de los servicios que hoy usa en Internet puede tenerlos ¡en su propio "
#~ "dispositivo y bajo su control!"
-#~ msgid "System Configuration"
-#~ msgstr "Configuración del sistema"
-
#~ msgid ""
#~ "Here you can administrate the underlying system of your %(box_name)s."
#~ msgstr "Aquí puede administrar el sistema básico de su %(box_name)s."
@@ -8399,9 +8439,6 @@ msgstr "Gujarati"
#~ msgid "Enable service discovery"
#~ msgstr "Activar detección de servicios"
-#~ msgid "Network Time Server"
-#~ msgstr "Servidor NTP"
-
#, fuzzy
#~ msgid "BitTorrent (Deluge)"
#~ msgstr "BitTorrent (Deluge)"
diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po
index df9e4267a..7f71bb83f 100644
--- a/plinth/locale/fa/LC_MESSAGES/django.po
+++ b/plinth/locale/fa/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2016-08-12 15:51+0000\n"
"Last-Translator: Masoud Abkenar \n"
"Language-Team: Persian instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4696,6 +4706,12 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Interface"
+msgid "Network File Storage"
+msgstr "واسط"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5180,14 +5196,14 @@ msgstr "مشترک"
msgid "Share deleted."
msgstr "{name} پاک شد."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5195,14 +5211,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Storage Snapshots"
@@ -5293,20 +5309,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Delete Snapshots"
@@ -5316,15 +5332,19 @@ msgstr "پاککردن %(name)s"
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -5352,53 +5372,47 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Manage Snapshots"
msgstr "پاککردن %(name)s"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
#, fuzzy
#| msgid "Configuration updated"
msgid "Storage snapshots configuration updated"
msgstr "پیکربندی بهروز شد"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-#, fuzzy
-#| msgid "Delete %(name)s"
-msgid "Deleted all snapshots"
-msgstr "پاککردن %(name)s"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Deleted selected snapshots"
msgstr "پاککردن %(name)s"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -5465,7 +5479,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5473,102 +5487,113 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, fuzzy, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size} بایت"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, fuzzy, python-brace-format
#| msgid "{disk_size} KiB"
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, fuzzy, python-brace-format
#| msgid "{disk_size} MiB"
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, fuzzy, python-brace-format
#| msgid "{disk_size} GiB"
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, fuzzy, python-brace-format
#| msgid "{disk_size} TiB"
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
#, fuzzy
#| msgid "The requested domain is already registered."
msgid "The device is already mounted."
msgstr "دامنهٔ درخواستی از قبل ثبت شده است."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid hostname"
@@ -5996,11 +6021,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
msgid "FreedomBox Updated"
msgstr "FreedomBox"
@@ -6055,7 +6088,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
#, fuzzy
#| msgid "Last update"
msgid "Manual update"
@@ -6074,11 +6107,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
@@ -6985,6 +7018,11 @@ msgstr ""
msgid "Gujarati"
msgstr ""
+#, fuzzy
+#~| msgid "Delete %(name)s"
+#~ msgid "Deleted all snapshots"
+#~ msgstr "پاککردن %(name)s"
+
#, fuzzy
#~ msgid "Enable application"
#~ msgstr "فعالسازی برنامه"
diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po
index 02f0782fb..1d499dbe1 100644
--- a/plinth/locale/fake/LC_MESSAGES/django.po
+++ b/plinth/locale/fake/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Plinth 0.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2016-01-31 22:24+0530\n"
"Last-Translator: Sunil Mohan Adapa \n"
"Language-Team: Plinth Developers INSTRUCTIONS"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "SYSTEM CONFIGURATION"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "RESTART OR SHUT DOWN THE SYSTEM."
@@ -5062,6 +5074,12 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Network Time Server"
+msgid "Network File Storage"
+msgstr "NETWORK TIME SERVER"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5563,14 +5581,14 @@ msgstr "EDIT USER"
msgid "Share deleted."
msgstr "{name} DELETED."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5578,14 +5596,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
#, fuzzy
#| msgid "Create User"
msgid "Storage Snapshots"
@@ -5678,20 +5696,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "DELETE USER PERMANENTLY?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Delete Snapshots"
@@ -5703,17 +5721,19 @@ msgstr "DELETE %(name)s"
msgid "Create Snapshot"
msgstr "CREATE USER"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-#, fuzzy
-#| msgid "Inactive"
-msgid "active"
-msgstr "INACTIVE"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -5741,53 +5761,47 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
#, fuzzy
#| msgid "Create User"
msgid "Manage Snapshots"
msgstr "CREATE USER"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
#, fuzzy
#| msgid "Configuration updated"
msgid "Storage snapshots configuration updated"
msgstr "CONFIGURATION UPDATED"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "ACTION ERROR: {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-#, fuzzy
-#| msgid "Delete %(name)s"
-msgid "Deleted all snapshots"
-msgstr "DELETE %(name)s"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Deleted selected snapshots"
msgstr "DELETE %(name)s"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -5854,7 +5868,7 @@ msgstr ""
msgid "Login"
msgstr "LOGIN"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5862,104 +5876,115 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
#, fuzzy
#| msgid "reStore"
msgid "Storage"
msgstr "RESTORE"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
#, fuzzy
#| msgid "repro service is running"
msgid "The device is already unmounting."
msgstr "REPRO SERVICE IS RUNNING"
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
#, fuzzy
#| msgid "This service already exists"
msgid "The device is already mounted."
msgstr "THIS SERVICE ALREADY EXISTS"
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
#, fuzzy
#| msgid "repro service is not running"
msgid "The device is not mounted."
msgstr "REPRO SERVICE IS NOT RUNNING"
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid hostname"
@@ -6438,13 +6463,21 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
#, fuzzy
#| msgid "Update URL"
msgid "Update"
msgstr "UPDATE URL"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox Manual"
msgid "FreedomBox Updated"
@@ -6511,7 +6544,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
#, fuzzy
#| msgid "Last update"
msgid "Manual update"
@@ -6530,11 +6563,11 @@ msgstr "AUTOMATIC UPGRADES ENABLED"
msgid "Automatic upgrades disabled"
msgstr "AUTOMATIC UPGRADES DISABLED"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "UPGRADE PROCESS STARTED."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "STARTING UPGRADE FAILED."
@@ -7509,6 +7542,16 @@ msgstr "%(percentage)s%% COMPLETE"
msgid "Gujarati"
msgstr ""
+#, fuzzy
+#~| msgid "Inactive"
+#~ msgid "active"
+#~ msgstr "INACTIVE"
+
+#, fuzzy
+#~| msgid "Delete %(name)s"
+#~ msgid "Deleted all snapshots"
+#~ msgstr "DELETE %(name)s"
+
#, fuzzy
#~| msgid "Applications"
#~ msgid "Enable application"
@@ -8015,9 +8058,6 @@ msgstr ""
#~ "ON\n"
#~ "SITE AND UNDER YOUR CONTROL!"
-#~ msgid "System Configuration"
-#~ msgstr "SYSTEM CONFIGURATION"
-
#, fuzzy
#~| msgid ""
#~| "Here you can administrate the underlying system of your %(box_name)s."
@@ -8311,9 +8351,6 @@ msgstr ""
#~ msgid "Enable service discovery"
#~ msgstr "ENABLE SERVICE DISCOVERY"
-#~ msgid "Network Time Server"
-#~ msgstr "NETWORK TIME SERVER"
-
#~ msgid "BitTorrent (Deluge)"
#~ msgstr "BITTORRENT (DELUGE)"
diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po
index 6496d908b..412ae2bd6 100644
--- a/plinth/locale/fr/LC_MESSAGES/django.po
+++ b/plinth/locale/fr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-05-02 08:11+0000\n"
"Last-Translator: Nathan \n"
"Language-Team: French wiki PageKite (en anglais)"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "Configuration Système"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Redémarrer ou éteindre le système."
@@ -5042,6 +5054,12 @@ msgstr "Accès aux partages privés"
msgid "Samba"
msgstr "Samba"
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Network Time Server"
+msgid "Network File Storage"
+msgstr "Serveur de temps réseau"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -5534,7 +5552,7 @@ msgstr "Modifier le partage"
msgid "Share deleted."
msgstr "Partage supprimé."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
@@ -5545,7 +5563,7 @@ msgstr ""
"utilisés pour ramener le système à un état précédent connu pour être "
"fonctionnel, dans le cas ou des changements non désirés ont été appliqués."
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5557,7 +5575,7 @@ msgstr ""
"instantanés plus anciens peuvent être supprimés automatiquement en fonction "
"du paramétrage qui suit."
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for sauvegardes"
"a> car ils sont forcément conservés sur la même partition. "
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "Instantanés de disque"
@@ -5657,20 +5675,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "Supprimer définitivement ces instantanés ?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "Numéro"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "Date"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "Supprimer les instantanés"
@@ -5678,15 +5696,19 @@ msgstr "Supprimer les instantanés"
msgid "Create Snapshot"
msgstr "Créer un instantané"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "Revenir en arrière"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "actif"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "Revenir à l'instantané #%(number)s"
@@ -5724,46 +5746,42 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "Revenir à l'instantané #%(number)s"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr "Gestion des instantanés"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "Instantané créé."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr "Configuration des instantanés de disque mise à jour"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "Erreur sur action : {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr "Supprimer tous les instantanés"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr "Supprimer les instantanés sélectionnés"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
"L’instantané est en cours d’utilisation. Veuillez réessayer ultérieurement."
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "Retour vers l'instantané #{number} effectué."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr "Le système doit être redémarré pour terminer le retour en arrière."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "Revenir à l'instantané"
@@ -5833,7 +5851,7 @@ msgstr "Authentification unique"
msgid "Login"
msgstr "S’identifier"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5845,101 +5863,112 @@ msgstr ""
"d’utilisation, monter et démonter des médias amovibles, étendre la partition "
"racine, etc."
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr "Stockage"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} octets"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} Kio"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} Mio"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} Gio"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} Tio"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr "L'opération a échoué."
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr "L'opération a été annulée."
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr "Le périphérique est déjà en train d’être démonté."
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
"L’opération n’est pas gérée par manque d'un pilote ou d'un outil adapté."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr "L'opération ne s'est pas terminée."
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
"L'opération devrait réveiller un disque qui se trouve dans un état "
"d'endormissement profond."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr "Tentative de démontage d’un périphérique en cours d’utilisation."
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr "L'opération a déjà été annulée."
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr "Vous n'êtes pas autorisé à effectuer l'opération demandée."
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr "Le périphérique est déjà monté."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr "Le périphérique n’est pas monté."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr "Vous n'êtes pas autorisé à utiliser l'option demandée."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr "Le périphérique est monté par un autre utilisateur."
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
"Espace faible sur la partition système : {percent_used}% utilisés, "
"{free_space} libre."
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr "Espace disque faible"
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr "Nom de répertoire invalide."
@@ -6428,11 +6457,19 @@ msgstr ""
"Rechercher et installer les dernières mises à jour logicielles et les "
"correctifs de sécurité."
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "Mises à jour"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
msgid "FreedomBox Updated"
msgstr "FreedomBox mise à jour"
@@ -6490,7 +6527,7 @@ msgstr "Basculer les journaux de modification récents"
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr "Mise à jour manuelle"
@@ -6509,11 +6546,11 @@ msgstr "Mises à niveau automatiques activées"
msgid "Automatic upgrades disabled"
msgstr "Mises à niveau automatiques désactivées"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "Mise à niveau initiée."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "Le lancement de la mise à niveau a échoué."
@@ -7464,6 +7501,12 @@ msgstr "%(percentage)s%% effectué"
msgid "Gujarati"
msgstr "Gujarati"
+#~ msgid "active"
+#~ msgstr "actif"
+
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Supprimer tous les instantanés"
+
#~ msgid "Enable application"
#~ msgstr "Activer l'application"
@@ -8232,9 +8275,6 @@ msgstr "Gujarati"
#~ "messages instantanés, de média social ou de blogue. Il est aussi possible "
#~ "d'élaborer un portail réunissant plusieurs services sous votre contrôle."
-#~ msgid "System Configuration"
-#~ msgstr "Configuration Système"
-
#~ msgid ""
#~ "Here you can administrate the underlying system of your %(box_name)s."
#~ msgstr ""
@@ -8560,9 +8600,6 @@ msgstr "Gujarati"
#~ msgid "Enable service discovery"
#~ msgstr "Activer la découverte de services"
-#~ msgid "Network Time Server"
-#~ msgstr "Serveur de temps réseau"
-
#~ msgid "BitTorrent (Deluge)"
#~ msgstr "BitTorrent (Deluge)"
diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po
index c8a00ae7d..080caa731 100644
--- a/plinth/locale/gl/LC_MESSAGES/django.po
+++ b/plinth/locale/gl/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2019-07-11 08:01+0000\n"
"Last-Translator: Miguel A. Bouzada \n"
"Language-Team: Galician instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4248,6 +4258,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -4676,14 +4690,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4691,14 +4705,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4777,20 +4791,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -4798,15 +4812,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -4834,45 +4852,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr ""
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -4933,7 +4947,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4941,96 +4955,107 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr ""
@@ -5440,11 +5465,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox"
msgid "FreedomBox Updated"
@@ -5496,7 +5529,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr ""
@@ -5513,11 +5546,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po
index c74b994b2..578661129 100644
--- a/plinth/locale/gu/LC_MESSAGES/django.po
+++ b/plinth/locale/gu/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2018-02-05 18:37+0000\n"
"Last-Translator: drashti kaushik \n"
"Language-Team: Gujarati instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "સિસ્ટમ રૂપરેખાંકન"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4453,6 +4465,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -4885,14 +4901,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4900,14 +4916,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4986,20 +5002,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -5007,15 +5023,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -5043,46 +5063,42 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
#, fuzzy
msgid "Storage snapshots configuration updated"
msgstr "DNSSEC ગોઠવણીને સુધારેલી શરુ કરો"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -5147,7 +5163,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5155,96 +5171,107 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid hostname"
@@ -5662,11 +5689,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox"
msgid "FreedomBox Updated"
@@ -5722,7 +5757,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
#, fuzzy
#| msgid "Last update"
msgid "Manual update"
@@ -5741,11 +5776,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
@@ -6701,9 +6736,6 @@ msgstr ""
#~ msgid "Where to Get Help"
#~ msgstr "મદદ ક્યાંથી મળે"
-#~ msgid "System Configuration"
-#~ msgstr "સિસ્ટમ રૂપરેખાંકન"
-
#~ msgid ""
#~ "Here you can administrate the underlying system of your %(box_name)s."
#~ msgstr "અહીં તમે તમારી અંતર્ગત સિસ્ટમનું સંચાલન કરી શકો છો %(box_name)s."
diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po
index d2495f265..c2790cdab 100644
--- a/plinth/locale/hi/LC_MESSAGES/django.po
+++ b/plinth/locale/hi/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-04-03 20:11+0000\n"
"Last-Translator: Allan Nordhøy \n"
"Language-Team: Hindi %(service_name)s is running."
msgid "Service {service_name} is running"
msgstr "सर्विस %(service_name)s चल रहा है."
-#: plinth/daemon.py:96
+#: plinth/daemon.py:111
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "{kind} में सुन कर पोर्ट {listen_address} :{port}"
-#: plinth/daemon.py:99
+#: plinth/daemon.py:114
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "{kind} में सुन कर पोर्ट{port}"
-#: plinth/daemon.py:167
+#: plinth/daemon.py:182
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host}:{port} से जुड़े"
-#: plinth/daemon.py:169
+#: plinth/daemon.py:184
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host}:{port} से नहीं जोड़ सखता"
@@ -763,6 +763,7 @@ msgid ""
msgstr ""
#: plinth/modules/cockpit/__init__.py:59 plinth/modules/cockpit/manifest.py:12
+#: plinth/modules/performance/manifest.py:11
msgid "Cockpit"
msgstr "कॉकपिट"
@@ -793,7 +794,7 @@ msgstr "सामान्य कॉन्फ़िगरेशन"
#: plinth/modules/config/__init__.py:57 plinth/modules/dynamicdns/views.py:29
#: plinth/modules/names/templates/names.html:29
#: plinth/modules/names/templates/names.html:43
-#: plinth/modules/snapshot/views.py:26
+#: plinth/modules/snapshot/views.py:28
#: plinth/modules/tahoe/templates/tahoe-pre-setup.html:24
msgid "Configure"
msgstr "कॉन्फ़िगर करें"
@@ -960,7 +961,7 @@ msgstr ""
msgid "Coquelicot"
msgstr "कोकेलिकॉट"
-#: plinth/modules/coquelicot/__init__.py:47 plinth/modules/samba/__init__.py:63
+#: plinth/modules/coquelicot/__init__.py:47
msgid "File Sharing"
msgstr "फ़ाइल शेयरइंग"
@@ -1629,19 +1630,19 @@ msgstr ""
msgid "Firewall"
msgstr "फ़ायरवॉल"
-#: plinth/modules/firewall/components.py:118
+#: plinth/modules/firewall/components.py:124
#, fuzzy, python-brace-format
#| msgid "%(service_name)s is available only on internal networks."
msgid "Port {name} ({details}) available for internal networks"
msgstr "%(service_name)s सिर्फ आंतरिक नेटवर्क्स पर उपलब्ध है."
-#: plinth/modules/firewall/components.py:126
+#: plinth/modules/firewall/components.py:132
#, fuzzy, python-brace-format
#| msgid "%(service_name)s is available only on internal networks."
msgid "Port {name} ({details}) available for external networks"
msgstr "%(service_name)s सिर्फ आंतरिक नेटवर्क्स पर उपलब्ध है."
-#: plinth/modules/firewall/components.py:131
+#: plinth/modules/firewall/components.py:137
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@@ -3739,7 +3740,7 @@ msgstr "इंटरफ़ेस"
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr "विवरण"
@@ -4509,6 +4510,15 @@ msgstr ""
"SSH ग्राहक सेटअप देखें instructions"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "सिस्टम को रीस्टार्ट करें या शट डाउन करें ."
@@ -4856,6 +4866,12 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Distributed File Storage"
+msgid "Network File Storage"
+msgstr "फ़ाइल स्टोरेज वितरित"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5356,7 +5372,7 @@ msgstr "शेयर संपादित करें"
msgid "Share deleted."
msgstr "शेयर हटाया गया."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
@@ -5366,7 +5382,7 @@ msgstr ""
"को वापस रोल करने के लिए इस्तेमाल किया जा सकता है, एक पहले अच्छी स्थिति ज्ञात है अगर "
"सिस्टम पर अवांछित बदलाव किया गया."
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5374,7 +5390,7 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
#, fuzzy
#| msgid ""
#| "Snapshots work on btrfs file systems only and on the root partition only. "
@@ -5388,7 +5404,7 @@ msgstr ""
"स्नैपशॉट्स सिर्फ btrfs फाइल सिस्टम और रूट पार्टीशन पर काम करते हैं. स्नैपशॉट बैकअप के लिए "
"प्रतिस्थापन नहीं है क्योंकि वे उसी पार्टीशन पर संग्रहित होते हैं. "
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "स्टोरेज स्नैपशॉटस"
@@ -5470,20 +5486,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "इन स्नैपशॉटस स्थाई रूप से हटाएं?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "संख्या"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "तिथि"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "स्नैपशॉटस हटाएँ"
@@ -5491,15 +5507,19 @@ msgstr "स्नैपशॉटस हटाएँ"
msgid "Create Snapshot"
msgstr "स्नैपशॉट बनाइये"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "रोलबैक"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "एक्टिव"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "स्नैपशॉट से रोलबैक करें #%(number)s"
@@ -5529,49 +5549,43 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "स्नैपशॉट से रोलबैक करें #%(number)s"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr "स्नैपशॉटस प्रबंधित करें"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "स्नैपशॉट बनाया गया है."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr "स्टोरेज स्नैपशॉट कॉंफ़िगरेशन अपडेट किया गया"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "क्रिया त्रुटि: {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-#, fuzzy
-#| msgid "Deleted all snapshots."
-msgid "Deleted all snapshots"
-msgstr "सब स्नैपशॉटस हटाएँ गएे."
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
#, fuzzy
#| msgid "Delete all the snapshots"
msgid "Deleted selected snapshots"
msgstr "सब स्नैपशॉटस हटाएँ"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "स्नैपशॉट #{number} पर वापस रोलबाक होगा."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr "रोलबैक शुरु करने के लिए सिस्टम रीस्टार्ट करने का ज़रुरत है."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "स्नैपशॉट को रोलबैक करें"
@@ -5641,7 +5655,7 @@ msgstr "एकल साइन-ऑन"
msgid "Login"
msgstr "लॉगिन"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5649,88 +5663,88 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr "स्टोरेज"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} बाइट्स"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} किब"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} मेब"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} जिब"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} टीब"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr "ऑपरेशन अनुत्तीर्ण हो गया."
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr "ऑपरेशन रद्द किया गया."
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr "यह डिवाइस पहले से अनमाउट किया जा रहा है."
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr "यह ऑपरेशन अनुपलब्ध है क्यैकि ड्राइवर/उपकरण टूल समर्थित नहीं है."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr "ऑपरेशन टाइम आउट हो गया."
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "यह ऑपरेशन गहरी नींद की स्थिति का डिस्क को जाग जाएगा."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr "व्यस्त डिवाइस को अनमाउंट करने का प्रयास कर रहा है."
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr "ऑपरेशन पहले से रद्द किया गया."
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr "अनुरोधित ऑपरेशन करने के लिए अधिकृत नहीं है."
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr "यह डिवाइस पहले से माउंट किया गया."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr "यह डिवाइस नहीं माउंट किया गया."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr "अनुरोधित विकल्प का उपयोग करने की अनुमति नहीं है."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr "किसी और यूसर ने डिवाइस माउंट किया गया है."
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, fuzzy, no-python-format, python-brace-format
#| msgid ""
#| "Warning: Low space on system partition ({percent_used}% used, "
@@ -5740,10 +5754,21 @@ msgstr ""
"वार्निंग: सिस्टम पार्टीशन पर कम जगह ({percent_used}% उपयोग किया गया, "
"{free_space} free)."
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid hostname"
@@ -6245,11 +6270,19 @@ msgstr "टैनी टैनी आरएसएस (फोर्क)"
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "अपडेट"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox Foundation"
msgid "FreedomBox Updated"
@@ -6315,7 +6348,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
#, fuzzy
#| msgid "Last update"
msgid "Manual update"
@@ -6334,11 +6367,11 @@ msgstr "ऑटोमेटिक अपग्रेडस सक्षम कि
msgid "Automatic upgrades disabled"
msgstr "ऑटोमेटिक अपग्रेडस अक्षम किया गया"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "अपग्रेड प्रक्रिया शुरू हुई."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "अपग्रेड प्रारंभ करना विफल रहा."
@@ -7299,6 +7332,14 @@ msgstr "%(percentage)s%% पूर्ण"
msgid "Gujarati"
msgstr ""
+#~ msgid "active"
+#~ msgstr "एक्टिव"
+
+#, fuzzy
+#~| msgid "Deleted all snapshots."
+#~ msgid "Deleted all snapshots"
+#~ msgstr "सब स्नैपशॉटस हटाएँ गएे."
+
#~ msgid "Enable application"
#~ msgstr "एप्लिकेशन सक्षम करें"
diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po
index 12ec3d930..3369e09de 100644
--- a/plinth/locale/hu/LC_MESSAGES/django.po
+++ b/plinth/locale/hu/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-02-17 20:32+0000\n"
"Last-Translator: Doma Gergő \n"
"Language-Team: Hungarian instrukciókat"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "Rendszerbeállítások"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Újraindítás vagy leállítás."
@@ -4929,6 +4941,12 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Distributed File Storage"
+msgid "Network File Storage"
+msgstr "Elosztott fájltároló"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5448,7 +5466,7 @@ msgstr "Megosztás szerkesztése"
msgid "Share deleted."
msgstr "Megosztás törölve."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
@@ -5459,7 +5477,7 @@ msgstr ""
"működő állapotába való visszaállítására abban az esetben, ha nem kívánt "
"változtatások történtek a rendszerben."
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5471,7 +5489,7 @@ msgstr ""
"pillanatképek automatikusan ki lesznek takarítva az alábbi beállítások "
"szerint."
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for Biztonsági mentést, mivel a pillanatképek csak ugyanazon a "
"partíción tárolhatók amikről készülnek. "
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "Háttértár-pillanatképek"
@@ -5570,20 +5588,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "Véglegesen törlöd az alábbi pillanatképeket?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "Sorszám"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "Dátum"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "Pillanatképek törlése"
@@ -5591,15 +5609,19 @@ msgstr "Pillanatképek törlése"
msgid "Create Snapshot"
msgstr "Pillanatkép létrehozása"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "Visszaállít"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "aktív"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "Visszaállítás erre a pillanatképre: %(number)s"
@@ -5637,46 +5659,42 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "Visszaállítás erre a pillanatképre: %(number)s"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr "Pillanatképek kezelése"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "Pillanatkép létrehozva."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr "Tárolási pillanatképek konfigurációja frissítve"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "Hiba a művelet közben: {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr "Minden pillanatkép törölve"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr "Kiválasztott pillanatképek törölve"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
"Pillanatkép jelenleg is használatban van. Kérlek, próbáld meg újra később."
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "A {number} számú pillanatképre visszaállítva."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr "A visszaállítás befejezéséhez a rendszert újra kell indítani."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "Visszaállítás pillanatképre"
@@ -5749,7 +5767,7 @@ msgstr "Egyszeri bejelentkezés"
msgid "Login"
msgstr "Bejelentkezés"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5761,91 +5779,91 @@ msgstr ""
"fel- és lecsatolhatsz cserélhető adathordozókat, kibővítheted a root "
"partíciót, stb."
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr "Háttértár"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} byte"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr "A művelet sikertelen."
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr "A művelet meg lett szakítva."
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr "Az eszköz leválasztása már folyamatban van."
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
"A művelet nem támogatott hiányzó eszközvezérlő/segédeszköz támogatás miatt."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr "A művelet túllépte az időkorlátot."
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
"A művelet fel fogja ébreszteni a lemezt, amely mély-alvó állapotban van."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
"Megpróbáltál leválasztani egy eszközt, amely jelenleg is használatban van."
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr "A művelet már meg lett szakítva."
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr "Nem jogosult végrehajtani a kért műveletet."
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr "Az eszköz már fel lett csatolva."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr "Az eszköz nincs felcsatolva."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr "Nem használhatja a kért lehetőséget."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr "Az eszközt egy másik felhasználó felcsatolva."
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, fuzzy, no-python-format, python-brace-format
#| msgid ""
#| "Warning: Low space on system partition ({percent_used}% used, "
@@ -5855,10 +5873,21 @@ msgstr ""
"Figyelmeztetés: Kevés a szabad hely a rendszerpartíción ({percent_used}% "
"felhasználva, {free_space} szabad)."
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid repository name."
@@ -6378,11 +6407,19 @@ msgid "Check for and apply the latest software and security updates."
msgstr ""
"A legfrissebb szoftver- és biztonsági frissítések ellenőrzése és alkalmazása."
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "Frissítés"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox Foundation"
msgid "FreedomBox Updated"
@@ -6440,7 +6477,7 @@ msgstr "Frissítésnapló megjelenítése"
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr "Kézi frissítés"
@@ -6457,11 +6494,11 @@ msgstr "Automatikus frissítések engedélyezve"
msgid "Automatic upgrades disabled"
msgstr "Automatikus frissítések kikapcsolva"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "A frissítési folyamat elkezdődött."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "A frissítést nem sikerült elindítani."
@@ -7442,6 +7479,12 @@ msgstr "befejezettségi szint: %(percentage)s%%"
msgid "Gujarati"
msgstr "Gudzsaráti"
+#~ msgid "active"
+#~ msgstr "aktív"
+
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Minden pillanatkép törölve"
+
#~ msgid "Enable application"
#~ msgstr "Alkalmazás engedélyezése"
@@ -8182,9 +8225,6 @@ msgstr "Gudzsaráti"
#~ "lehet. Segítségével a felhasználó saját maga üzemeltethet "
#~ "szolgáltatásokat, visszanyerve az ellenőrzést az adatai felett."
-#~ msgid "System Configuration"
-#~ msgstr "Rendszerbeállítások"
-
#~ msgid ""
#~ "Here you can administrate the underlying system of your %(box_name)s."
#~ msgstr "Itt módosíthatóak a %(box_name)s alapbeállításai."
diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po
index 30037f39f..198ed3841 100644
--- a/plinth/locale/id/LC_MESSAGES/django.po
+++ b/plinth/locale/id/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Indonesian (FreedomBox)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2018-11-02 00:44+0000\n"
"Last-Translator: ButterflyOfFire \n"
"Language-Team: Indonesian instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "Pengaturan Sistem"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Jalankan ulang atau matikan sistem."
@@ -4438,6 +4450,11 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+msgid "Network File Storage"
+msgstr "Interface"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -4916,14 +4933,14 @@ msgstr "Shared"
msgid "Share deleted."
msgstr "{name} dihapus."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4931,14 +4948,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -5025,20 +5042,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "Tanggal"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Delete Snapshots"
@@ -5048,15 +5065,19 @@ msgstr "Hapus %(name)s"
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -5084,53 +5105,47 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Manage Snapshots"
msgstr "Hapus %(name)s"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
#, fuzzy
#| msgid "General Configuration"
msgid "Storage snapshots configuration updated"
msgstr "Konfigurasi Umum"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-#, fuzzy
-#| msgid "Delete %(name)s"
-msgid "Deleted all snapshots"
-msgstr "Hapus %(name)s"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Deleted selected snapshots"
msgstr "Hapus %(name)s"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -5197,7 +5212,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5205,101 +5220,112 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, fuzzy, python-brace-format
#| msgid "{disk_size} bytes"
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size} bytes"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, fuzzy, python-brace-format
#| msgid "{disk_size} KiB"
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, fuzzy, python-brace-format
#| msgid "{disk_size} MiB"
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, fuzzy, python-brace-format
#| msgid "{disk_size} GiB"
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, fuzzy, python-brace-format
#| msgid "{disk_size} TiB"
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Actions"
@@ -5723,11 +5749,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox"
msgid "FreedomBox Updated"
@@ -5784,7 +5818,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
#, fuzzy
#| msgid "Manual"
msgid "Manual update"
@@ -5803,11 +5837,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
@@ -6709,6 +6743,11 @@ msgstr ""
msgid "Gujarati"
msgstr ""
+#, fuzzy
+#~| msgid "Delete %(name)s"
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Hapus %(name)s"
+
#~ msgid "Enable application"
#~ msgstr "Aktifkan aplikasi"
@@ -6882,9 +6921,6 @@ msgstr ""
#~ msgid "Services and Applications"
#~ msgstr "Layanan dan Aplikasi"
-#~ msgid "System Configuration"
-#~ msgstr "Pengaturan Sistem"
-
#~ msgid "Language changed"
#~ msgstr "Bahasa telah dipilih"
diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po
index 77ee651cd..2ff150641 100644
--- a/plinth/locale/it/LC_MESSAGES/django.po
+++ b/plinth/locale/it/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-04-11 13:36+0000\n"
"Last-Translator: Jeannette L \n"
"Language-Team: Italian istruzioni della configurazione del client SSH"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "Configurazione sistema"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Riavvia o spegni il sistema."
@@ -4951,6 +4963,12 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Interface"
+msgid "Network File Storage"
+msgstr "Interfaccia"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5409,14 +5427,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5424,14 +5442,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -5510,20 +5528,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -5531,15 +5549,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -5567,46 +5589,42 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr ""
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
#, fuzzy
msgid "Deleted selected snapshots"
msgstr "Istantanee selezionate cancellate"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -5672,7 +5690,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5680,97 +5698,108 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
#, fuzzy
msgid "The device is already unmounting."
msgstr "Il dispositivo sta già smontando."
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr "Il dispositivo è già montato."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
msgid "Invalid directory name."
@@ -6192,11 +6221,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox"
msgid "FreedomBox Updated"
@@ -6249,7 +6286,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr "Aggiornamento manuale"
@@ -6266,11 +6303,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
@@ -7653,9 +7690,6 @@ msgstr ""
#~ msgid "Where to Get Help"
#~ msgstr "Dove Trovare Aiuto"
-#~ msgid "System Configuration"
-#~ msgstr "Configurazione sistema"
-
#, fuzzy
#~ msgid ""
#~ "Here you can administrate the underlying system of your %(box_name)s."
diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po
index 1201de88c..9f0ea4c59 100644
--- a/plinth/locale/ja/LC_MESSAGES/django.po
+++ b/plinth/locale/ja/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -26,27 +26,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
-#: plinth/daemon.py:70
+#: plinth/daemon.py:85
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
-#: plinth/daemon.py:96
+#: plinth/daemon.py:111
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
-#: plinth/daemon.py:99
+#: plinth/daemon.py:114
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
-#: plinth/daemon.py:167
+#: plinth/daemon.py:182
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
-#: plinth/daemon.py:169
+#: plinth/daemon.py:184
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@@ -667,6 +667,7 @@ msgid ""
msgstr ""
#: plinth/modules/cockpit/__init__.py:59 plinth/modules/cockpit/manifest.py:12
+#: plinth/modules/performance/manifest.py:11
msgid "Cockpit"
msgstr ""
@@ -695,7 +696,7 @@ msgstr ""
#: plinth/modules/config/__init__.py:57 plinth/modules/dynamicdns/views.py:29
#: plinth/modules/names/templates/names.html:29
#: plinth/modules/names/templates/names.html:43
-#: plinth/modules/snapshot/views.py:26
+#: plinth/modules/snapshot/views.py:28
#: plinth/modules/tahoe/templates/tahoe-pre-setup.html:24
msgid "Configure"
msgstr ""
@@ -827,7 +828,7 @@ msgstr ""
msgid "Coquelicot"
msgstr ""
-#: plinth/modules/coquelicot/__init__.py:47 plinth/modules/samba/__init__.py:63
+#: plinth/modules/coquelicot/__init__.py:47
msgid "File Sharing"
msgstr ""
@@ -1405,17 +1406,17 @@ msgstr ""
msgid "Firewall"
msgstr ""
-#: plinth/modules/firewall/components.py:118
+#: plinth/modules/firewall/components.py:124
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
-#: plinth/modules/firewall/components.py:126
+#: plinth/modules/firewall/components.py:132
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
-#: plinth/modules/firewall/components.py:131
+#: plinth/modules/firewall/components.py:137
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@@ -3276,7 +3277,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr ""
@@ -3968,6 +3969,15 @@ msgid ""
"SshOverPageKite/\">instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4245,6 +4255,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -4671,14 +4685,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4686,14 +4700,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4772,20 +4786,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -4793,15 +4807,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -4829,45 +4847,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr ""
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -4928,7 +4942,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4936,96 +4950,107 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr ""
@@ -5435,11 +5460,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
msgid "FreedomBox Updated"
msgstr ""
@@ -5489,7 +5522,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr ""
@@ -5506,11 +5539,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po
index 1201de88c..9f0ea4c59 100644
--- a/plinth/locale/kn/LC_MESSAGES/django.po
+++ b/plinth/locale/kn/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -26,27 +26,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
-#: plinth/daemon.py:70
+#: plinth/daemon.py:85
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
-#: plinth/daemon.py:96
+#: plinth/daemon.py:111
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
-#: plinth/daemon.py:99
+#: plinth/daemon.py:114
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
-#: plinth/daemon.py:167
+#: plinth/daemon.py:182
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
-#: plinth/daemon.py:169
+#: plinth/daemon.py:184
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@@ -667,6 +667,7 @@ msgid ""
msgstr ""
#: plinth/modules/cockpit/__init__.py:59 plinth/modules/cockpit/manifest.py:12
+#: plinth/modules/performance/manifest.py:11
msgid "Cockpit"
msgstr ""
@@ -695,7 +696,7 @@ msgstr ""
#: plinth/modules/config/__init__.py:57 plinth/modules/dynamicdns/views.py:29
#: plinth/modules/names/templates/names.html:29
#: plinth/modules/names/templates/names.html:43
-#: plinth/modules/snapshot/views.py:26
+#: plinth/modules/snapshot/views.py:28
#: plinth/modules/tahoe/templates/tahoe-pre-setup.html:24
msgid "Configure"
msgstr ""
@@ -827,7 +828,7 @@ msgstr ""
msgid "Coquelicot"
msgstr ""
-#: plinth/modules/coquelicot/__init__.py:47 plinth/modules/samba/__init__.py:63
+#: plinth/modules/coquelicot/__init__.py:47
msgid "File Sharing"
msgstr ""
@@ -1405,17 +1406,17 @@ msgstr ""
msgid "Firewall"
msgstr ""
-#: plinth/modules/firewall/components.py:118
+#: plinth/modules/firewall/components.py:124
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
-#: plinth/modules/firewall/components.py:126
+#: plinth/modules/firewall/components.py:132
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
-#: plinth/modules/firewall/components.py:131
+#: plinth/modules/firewall/components.py:137
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@@ -3276,7 +3277,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr ""
@@ -3968,6 +3969,15 @@ msgid ""
"SshOverPageKite/\">instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4245,6 +4255,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -4671,14 +4685,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4686,14 +4700,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4772,20 +4786,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -4793,15 +4807,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -4829,45 +4847,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr ""
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -4928,7 +4942,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4936,96 +4950,107 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr ""
@@ -5435,11 +5460,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
msgid "FreedomBox Updated"
msgstr ""
@@ -5489,7 +5522,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr ""
@@ -5506,11 +5539,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po
index 5623eff9f..bac1ff7f6 100644
--- a/plinth/locale/lt/LC_MESSAGES/django.po
+++ b/plinth/locale/lt/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -27,27 +27,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
-#: plinth/daemon.py:70
+#: plinth/daemon.py:85
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
-#: plinth/daemon.py:96
+#: plinth/daemon.py:111
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
-#: plinth/daemon.py:99
+#: plinth/daemon.py:114
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
-#: plinth/daemon.py:167
+#: plinth/daemon.py:182
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
-#: plinth/daemon.py:169
+#: plinth/daemon.py:184
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@@ -668,6 +668,7 @@ msgid ""
msgstr ""
#: plinth/modules/cockpit/__init__.py:59 plinth/modules/cockpit/manifest.py:12
+#: plinth/modules/performance/manifest.py:11
msgid "Cockpit"
msgstr ""
@@ -696,7 +697,7 @@ msgstr ""
#: plinth/modules/config/__init__.py:57 plinth/modules/dynamicdns/views.py:29
#: plinth/modules/names/templates/names.html:29
#: plinth/modules/names/templates/names.html:43
-#: plinth/modules/snapshot/views.py:26
+#: plinth/modules/snapshot/views.py:28
#: plinth/modules/tahoe/templates/tahoe-pre-setup.html:24
msgid "Configure"
msgstr ""
@@ -828,7 +829,7 @@ msgstr ""
msgid "Coquelicot"
msgstr ""
-#: plinth/modules/coquelicot/__init__.py:47 plinth/modules/samba/__init__.py:63
+#: plinth/modules/coquelicot/__init__.py:47
msgid "File Sharing"
msgstr ""
@@ -1406,17 +1407,17 @@ msgstr ""
msgid "Firewall"
msgstr ""
-#: plinth/modules/firewall/components.py:118
+#: plinth/modules/firewall/components.py:124
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
-#: plinth/modules/firewall/components.py:126
+#: plinth/modules/firewall/components.py:132
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
-#: plinth/modules/firewall/components.py:131
+#: plinth/modules/firewall/components.py:137
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@@ -3277,7 +3278,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr ""
@@ -3969,6 +3970,15 @@ msgid ""
"SshOverPageKite/\">instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4246,6 +4256,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -4672,14 +4686,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4687,14 +4701,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4773,20 +4787,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -4794,15 +4808,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -4830,45 +4848,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr ""
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -4929,7 +4943,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4937,96 +4951,107 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr ""
@@ -5436,11 +5461,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
msgid "FreedomBox Updated"
msgstr ""
@@ -5490,7 +5523,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr ""
@@ -5507,11 +5540,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po
index ece48cc66..b12872704 100644
--- a/plinth/locale/nb/LC_MESSAGES/django.po
+++ b/plinth/locale/nb/LC_MESSAGES/django.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-04-20 17:53-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-05-06 06:11+0000\n"
"Last-Translator: Petter Reinholdtsen \n"
"Language-Team: Norwegian Bokmål instructions (instruksjoner)"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "Systemoppsett"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Start om igjen, eller slå av systemet."
@@ -4960,6 +4972,12 @@ msgstr "Tilgang til private delinger"
msgid "Samba"
msgstr "Samba"
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Distributed File Storage"
+msgid "Network File Storage"
+msgstr "Distribuert fillagring"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5458,7 +5476,7 @@ msgstr "Rediger deling"
msgid "Share deleted."
msgstr "Deling slettet."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
@@ -5469,7 +5487,7 @@ msgstr ""
"en tidligere kjent god tilstand i tilfelle det har skjedd uønskede endringer "
"på systemet."
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5480,7 +5498,7 @@ msgstr ""
"etter programvareinstallasjon. Eldre øyeblikksbilder renskes automatisk i "
"henhold til innstillingene nedenfor."
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for sikkerhetskopier i og med at de er lagret på samme partisjon. "
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "Lagrings-avbildninger"
@@ -5576,20 +5594,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "Slett denne avbildningen for godt?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "Nummer"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "Dato"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "Slett avbildninger"
@@ -5597,15 +5615,19 @@ msgstr "Slett avbildninger"
msgid "Create Snapshot"
msgstr "Opprett øyeblikksbilde"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "Rull tilbake"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "Slått på"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "Rull tilbake til øyeblikksbilde #%(number)s"
@@ -5643,45 +5665,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "Rull tilbake til øyeblikksbilde #%(number)s"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr "Behandle avbildninger"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "Opprett øyeblikksbilde."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr "Lagringsavbildings-oppsett oppdatert"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "Handlingsfeil: {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr "Slettet alle avbildninger"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr "Slettet alle valgte avbildninger"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr "Øyeblikksbilde i bruk. Prøv igjen senere."
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "Rullet tilbake til øyeblikksbilde #{number}."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr "Systemet må startes på nytt for å fullføre tilbakerullingen."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "Rull tilbake til øyeblikksbilde"
@@ -5759,7 +5777,7 @@ msgstr "Engangspålogging"
msgid "Login"
msgstr "Login"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5770,89 +5788,89 @@ msgstr ""
"kan vise lagringsmedia som er i bruk, montere og avmontere flyttbare medium, "
"utvide rotpartisjonen, osv."
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr "Lager"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} byte"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr "Operasjonen mislyktes."
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr "Operasjonen ble avbrutt."
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr "Enheten avmonteres allerede."
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
"Denne aktiviteten støttes ikke på grunn av manglende driver-/verktøystøtte."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr "Tidsavbrudd for operasjon."
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "Operasjonen vil vekke en disk fra en tilstand av dyp søvn."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr "Prøver å avmontere en opptatt enhet."
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr "Operasjonen har allerede blitt avbrutt."
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr "Mangler rettigheter til utførelse av forespurt operasjon."
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr "Denne enheten er allerede montert."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr "Enheten er ikke montert."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr "Mangler rettigheter til bruk av forespurt valg."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr "Enheten er montert av en annen bruker."
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, fuzzy, no-python-format, python-brace-format
#| msgid ""
#| "Warning: Low space on system partition ({percent_used}% used, "
@@ -5862,10 +5880,21 @@ msgstr ""
"Advarsel: Lite plass igjen på systempartisjon ({percent_used}% brukt, "
"{free_space} ledig)."
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr "Lite ledig diskplass"
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr "Ugyldig katalognavn."
@@ -6364,11 +6393,19 @@ msgstr "Tiny Tiny RSS (avgreining)"
msgid "Check for and apply the latest software and security updates."
msgstr "Sjekk og legg til siste programvare- og sikkerhetsoppdateringer."
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "Oppdater"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox Foundation"
msgid "FreedomBox Updated"
@@ -6427,7 +6464,7 @@ msgstr "Veksle nylige oppdateringslogger"
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr "Manuell oppdatering"
@@ -6445,11 +6482,11 @@ msgstr "Automatiske oppgraderinger aktivert"
msgid "Automatic upgrades disabled"
msgstr "Automatiske oppgraderinger avslått (deaktivert)"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "Oppgraderingsprosessen (upgrade process) har startet."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "Å starte oppgradering (upgrade) mislyktes."
@@ -7433,6 +7470,12 @@ msgstr "%(percentage)s%% fullført"
msgid "Gujarati"
msgstr "Gujarati"
+#~ msgid "active"
+#~ msgstr "Slått på"
+
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Slettet alle avbildninger"
+
#~ msgid "Enable application"
#~ msgstr "Aktiver program"
@@ -8220,9 +8263,6 @@ msgstr "Gujarati"
#~ "du webportaler? Vi kan være en av dem også. Mange av de tjenestene du "
#~ "bruker på nettet kan snart være her og under din kontroll!"
-#~ msgid "System Configuration"
-#~ msgstr "Systemoppsett"
-
#~ msgid ""
#~ "Here you can administrate the underlying system of your %(box_name)s."
#~ msgstr ""
diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po
index 26ec56343..7702c33c2 100644
--- a/plinth/locale/nl/LC_MESSAGES/django.po
+++ b/plinth/locale/nl/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-01-17 21:21+0000\n"
"Last-Translator: ikmaak \n"
"Language-Team: Dutch instructies (Engelstalig)"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "Systeeminstelling"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Herstarten of uitschakelen van het systeem."
@@ -4837,6 +4849,12 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Network Time Server"
+msgid "Network File Storage"
+msgstr "Netwerktijdsserver"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5333,7 +5351,7 @@ msgstr "Gedeelde map bewerken"
msgid "Share deleted."
msgstr "Gedeelde map verwijderd."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
@@ -5343,7 +5361,7 @@ msgstr ""
"kunnen worden gebruikt om in geval van ongewenste wijzigingen aan het "
"systeem terug te keren naar een voorheen goed werkende staat."
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5351,7 +5369,7 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups aangezien ze op dezelfde partitie als hun bron worden "
"bewaard. "
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "Opslag Snapshots"
@@ -5446,20 +5464,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "De volgende snapshots permanent verwijderen?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "Nummer"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "Datum"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "Snapshots verwijderen"
@@ -5467,15 +5485,19 @@ msgstr "Snapshots verwijderen"
msgid "Create Snapshot"
msgstr "Maak Snapshot"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "Terugdraaien"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "actief"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "Terugdraaien tot snapshot #%(number)s"
@@ -5506,46 +5528,42 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "Terugdraaien tot Snapshot #%(number)s"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr "Beheren van Snapshots"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "Gemaakte snapshot."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr "Opslag van Snapshots configuratie is bijgewerkt"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "Actiefout: {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr "Alle snapshots verwijderd"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr "Verwijderde geselecteerde snapshots"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "Teruggezet naar snapshot #{number}."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
"Het systeem moet opnieuw worden opgestart om het terugdraaien te voltooien."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "Terugdraaien naar Snapshot"
@@ -5616,7 +5634,7 @@ msgstr "Eenmalige aanmelding"
msgid "Login"
msgstr "Aanmelding"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5624,88 +5642,88 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr "Storage"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} bytes"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr "De bewerking is mislukt."
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr "De bewerking is afgebroken."
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr "Het apparaat is al aan het ontkoppelen."
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr "Er is een time-out opgetreden voor deze bewerking."
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr "Poging om een apparaat te ontkoppelen dat in gebruik is."
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr "De bewerking is al geannuleerd."
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr "Het apparaat is al gekoppeld."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr "Het apparaat is niet ge-mount."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, fuzzy, no-python-format, python-brace-format
#| msgid ""
#| "Warning: Low space on system partition ({percent_used}% used, "
@@ -5715,10 +5733,21 @@ msgstr ""
"Waarschuwing: Weinig ruimte op de systeempartitie ({percent_used} % "
"gebruikt, {free_space} vrij)."
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid hostname"
@@ -6238,11 +6267,19 @@ msgid "Check for and apply the latest software and security updates."
msgstr ""
"Controleer de nieuwste software- en beveiligingsupdates en pas deze toe."
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "Update"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox Foundation"
msgid "FreedomBox Updated"
@@ -6302,7 +6339,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr "Handmatige update"
@@ -6319,11 +6356,11 @@ msgstr "Automatisch bijwerken ingeschakeld"
msgid "Automatic upgrades disabled"
msgstr "Automatisch bijwerken uitgeschakeld"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "Upgrade-proces gestart."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "Starten van de upgrade is mislukt."
@@ -7302,6 +7339,12 @@ msgstr "%(percentage)s%% voltooid"
msgid "Gujarati"
msgstr "Gujarati"
+#~ msgid "active"
+#~ msgstr "actief"
+
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Alle snapshots verwijderd"
+
#~ msgid "Enable application"
#~ msgstr "Toepassing inschakelen"
@@ -8147,9 +8190,6 @@ msgstr "Gujarati"
#~ "anderen afneemt kunnen nu thuis beheerd worden, en onder eigen controle "
#~ "staan!"
-#~ msgid "System Configuration"
-#~ msgstr "Systeeminstelling"
-
#~ msgid ""
#~ "Here you can administrate the underlying system of your %(box_name)s."
#~ msgstr "Hier kunt u het onderliggende systeem van %(box_name)s beheren."
@@ -8469,9 +8509,6 @@ msgstr "Gujarati"
#~ msgid "Enable service discovery"
#~ msgstr "Service Discovery Inschakelen"
-#~ msgid "Network Time Server"
-#~ msgstr "Netwerktijdsserver"
-
#~ msgid "BitTorrent (Deluge)"
#~ msgstr "BitTorrent (Deluge)"
diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po
index 44f5cf317..381783204 100644
--- a/plinth/locale/pl/LC_MESSAGES/django.po
+++ b/plinth/locale/pl/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-02-19 22:47+0000\n"
"Last-Translator: Radek Pasiok \n"
"Language-Team: Polish %(service_name)s is not running."
msgid "Port {name} ({details}) available for internal networks"
msgstr "Usługa %(service_name)s nie jest uruchomiona."
-#: plinth/modules/firewall/components.py:126
+#: plinth/modules/firewall/components.py:132
#, fuzzy, python-brace-format
#| msgid "Service %(service_name)s is not running."
msgid "Port {name} ({details}) available for external networks"
msgstr "Usługa %(service_name)s nie jest uruchomiona."
-#: plinth/modules/firewall/components.py:131
+#: plinth/modules/firewall/components.py:137
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@@ -3597,7 +3598,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr ""
@@ -4295,6 +4296,15 @@ msgid ""
"SshOverPageKite/\">instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Uruchom ponownie lub wyłącz system."
@@ -4581,6 +4591,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -5027,14 +5041,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5042,14 +5056,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -5136,20 +5150,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Delete Snapshots"
@@ -5159,15 +5173,19 @@ msgstr "Usuń %(name)s"
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -5195,53 +5213,47 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Manage Snapshots"
msgstr "Usuń %(name)s"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
#, fuzzy
#| msgid "Access rights configuration updated"
msgid "Storage snapshots configuration updated"
msgstr "Zaktualizowano ustawienia praw dostępu"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-#, fuzzy
-#| msgid "Delete %(name)s"
-msgid "Deleted all snapshots"
-msgstr "Usuń %(name)s"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
#, fuzzy
#| msgid "Delete %(name)s"
msgid "Deleted selected snapshots"
msgstr "Usuń %(name)s"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -5308,7 +5320,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5316,99 +5328,110 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, fuzzy, python-brace-format
#| msgid "{disk_size} bytes"
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size} bajtów"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, fuzzy, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, fuzzy, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, fuzzy, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, fuzzy, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
#, fuzzy
#| msgid "The requested domain is already registered."
msgid "The device is already mounted."
msgstr "Wnioskowana domena jest już zarejstrowana."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid hostname"
@@ -5839,11 +5862,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox Foundation"
msgid "FreedomBox Updated"
@@ -5900,7 +5931,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
#, fuzzy
#| msgid "Last update"
msgid "Manual update"
@@ -5919,11 +5950,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
@@ -6876,6 +6907,11 @@ msgstr ""
msgid "Gujarati"
msgstr ""
+#, fuzzy
+#~| msgid "Delete %(name)s"
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Usuń %(name)s"
+
#~ msgid "Enable application"
#~ msgstr "Aktywuj aplikację"
diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po
index a7656af8b..a3f912684 100644
--- a/plinth/locale/pt/LC_MESSAGES/django.po
+++ b/plinth/locale/pt/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-04-08 13:55+0000\n"
"Last-Translator: Manuela Silva \n"
"Language-Team: Portuguese instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4396,6 +4406,12 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Network Time Server"
+msgid "Network File Storage"
+msgstr "Servidor do Tempo da Rede"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -4843,14 +4859,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4858,14 +4874,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4944,20 +4960,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -4965,15 +4981,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -5001,47 +5021,43 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
#, fuzzy
#| msgid "Configuration updated"
msgid "Storage snapshots configuration updated"
msgstr "Configuração atualizada"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -5104,7 +5120,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5112,98 +5128,109 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
#, fuzzy
#| msgid "Service discovery server is running"
msgid "The device is already unmounting."
msgstr "O Servidor da descoberta do serviço está a correr"
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "Esta operação pode ligar um disco que esteja no estado de adormecido."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid domain name"
@@ -5624,11 +5651,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox"
msgid "FreedomBox Updated"
@@ -5684,7 +5719,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr ""
@@ -5701,11 +5736,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po
index 0a81a1ea1..cd5f7d4a7 100644
--- a/plinth/locale/ru/LC_MESSAGES/django.po
+++ b/plinth/locale/ru/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-05-18 22:17+0000\n"
"Last-Translator: Artem \n"
"Language-Team: Russian =2 && n%10<="
-"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.1-dev\n"
#: doc/dev/_templates/layout.html:11
@@ -28,28 +28,28 @@ msgstr "Страница источника"
msgid "FreedomBox"
msgstr "FrеedomBox"
-#: plinth/daemon.py:70
+#: plinth/daemon.py:85
#, fuzzy, python-brace-format
#| msgid "Service %(service_name)s is running."
msgid "Service {service_name} is running"
msgstr "Выполняется служба %(service_name)s."
-#: plinth/daemon.py:96
+#: plinth/daemon.py:111
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "Слушать на {kind} порт {listen_address}:{port}"
-#: plinth/daemon.py:99
+#: plinth/daemon.py:114
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "Слушать порт {port} на {kind}"
-#: plinth/daemon.py:167
+#: plinth/daemon.py:182
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "Подключение к {host}:{port}"
-#: plinth/daemon.py:169
+#: plinth/daemon.py:184
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "Невозможно подключиться к {host}:{port}"
@@ -782,6 +782,7 @@ msgstr ""
"использовать IP-адрес как часть URL."
#: plinth/modules/cockpit/__init__.py:59 plinth/modules/cockpit/manifest.py:12
+#: plinth/modules/performance/manifest.py:11
msgid "Cockpit"
msgstr "Cockpit"
@@ -814,7 +815,7 @@ msgstr "Общие настройки"
#: plinth/modules/config/__init__.py:57 plinth/modules/dynamicdns/views.py:29
#: plinth/modules/names/templates/names.html:29
#: plinth/modules/names/templates/names.html:43
-#: plinth/modules/snapshot/views.py:26
+#: plinth/modules/snapshot/views.py:28
#: plinth/modules/tahoe/templates/tahoe-pre-setup.html:24
msgid "Configure"
msgstr "Настроить"
@@ -975,7 +976,7 @@ msgstr ""
msgid "Coquelicot"
msgstr "Coquelicot"
-#: plinth/modules/coquelicot/__init__.py:47 plinth/modules/samba/__init__.py:63
+#: plinth/modules/coquelicot/__init__.py:47
msgid "File Sharing"
msgstr "Обмен Файлами"
@@ -1660,19 +1661,19 @@ msgstr ""
msgid "Firewall"
msgstr "Брандмауэр"
-#: plinth/modules/firewall/components.py:118
+#: plinth/modules/firewall/components.py:124
#, fuzzy, python-brace-format
#| msgid "%(service_name)s is available only on internal networks."
msgid "Port {name} ({details}) available for internal networks"
msgstr "%(service_name)s доступно только во внутренних сетях."
-#: plinth/modules/firewall/components.py:126
+#: plinth/modules/firewall/components.py:132
#, fuzzy, python-brace-format
#| msgid "%(service_name)s is available only on internal networks."
msgid "Port {name} ({details}) available for external networks"
msgstr "%(service_name)s доступно только во внутренних сетях."
-#: plinth/modules/firewall/components.py:131
+#: plinth/modules/firewall/components.py:137
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr "Порт {name} ({details}) недоступен для внешних сетей"
@@ -3860,7 +3861,7 @@ msgstr "Интерфейс"
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr "Описание"
@@ -4638,6 +4639,17 @@ msgstr ""
"Инструкции "
"по настройке клиента SSH"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "Конфигурация системы"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Перезагрузка или завершение работы системы."
@@ -4990,6 +5002,12 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Network Time Server"
+msgid "Network File Storage"
+msgstr "Сетевой сервер времени"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5497,7 +5515,7 @@ msgstr "Редактировать общий ресурс"
msgid "Share deleted."
msgstr "Общий ресурс удалён."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
@@ -5507,7 +5525,7 @@ msgstr ""
"btrfs. Они могут использоваться для отката системы к последнему рабочему "
"состоянию в случае неприемлемых изменений в системе."
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5518,7 +5536,7 @@ msgstr ""
"до и после инсталляции программного обеспечения. Старые снимки автоматически "
"удаляются в соответствии с установками ниже."
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups, так как они хранятся на том же разделе. "
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "Хранилище снимков"
@@ -5615,20 +5633,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "Окончательно удалить этот снапшот?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "Номер"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "Дата"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "Удалить снапшот"
@@ -5636,15 +5654,19 @@ msgstr "Удалить снапшот"
msgid "Create Snapshot"
msgstr "Создать снимок"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "Откат"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "активен"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "Откат к снимку #%(number)s"
@@ -5680,45 +5702,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "Откат к снимку %(number)s"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr "Управление снапшотами"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "Создан снимок."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr "Настройки хранения снапшотов обновлены"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "Ошибка действий: {0}[{1}][{2}]"
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr "Удалить все снапшоты"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr "Удалить выбранные снапшоты"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr "Снимок сейчас используется. Попробуйте позже."
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "Откат к снимку #{number}."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr "Необходимо перезагрузить систему для завершения отката."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "Откат к снимку"
@@ -5791,7 +5809,7 @@ msgstr "Единый вход"
msgid "Login"
msgstr "Логин"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5802,89 +5820,89 @@ msgstr ""
"{box_name}. Вы можете видеть, какие носители используются, монтировать и "
"размонтировать подключаемые носители, увеличивать корневой раздел итп."
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr "Storage"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} байт"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} КиБ"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} Миб"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} Гиб"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} Тиб"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr "Операция не удалась."
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr "Операция была отменена."
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr "Устройство уже отключается."
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
"Операция не поддерживается из-за отсутствия поддержки драйвера или утилиты."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr "Время операции вышло."
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "Операция пробудит диск, находящийся в режиме глубокого сна."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr "Попытка отключения устройства, которое используется."
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr "Операция уже отменена."
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr "Отсутствует авторизация для выполнения запрошенной операции."
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr "Устройство уже подключено."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr "Устройство не подключено."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr "Использование запрошенной опции не разрешено."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr "Устройство подключено другим пользователем."
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, fuzzy, no-python-format, python-brace-format
#| msgid ""
#| "Warning: Low space on system partition ({percent_used}% used, "
@@ -5894,10 +5912,21 @@ msgstr ""
"Предупреждение: недостаточно свободного пространства на системном разделе "
"({percent_used}% используется, {free_space} свободно)."
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid hostname"
@@ -6409,11 +6438,19 @@ msgstr "Tiny Tiny RSS (Fork)"
msgid "Check for and apply the latest software and security updates."
msgstr "Проверьте и установите новейшие программы и обновления безопасности."
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "Обновление"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox Foundation"
msgid "FreedomBox Updated"
@@ -6476,7 +6513,7 @@ msgstr "Переключите последние протоколы обнов
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr "Ручное обновление"
@@ -6493,11 +6530,11 @@ msgstr "Автоматические обновления включены"
msgid "Automatic upgrades disabled"
msgstr "Автоматические обновления отключены"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "Начался процесс обновления."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "Сбой при запуске обновления."
@@ -7477,6 +7514,12 @@ msgstr "%(percentage)s%% завершено"
msgid "Gujarati"
msgstr "Гуджарати"
+#~ msgid "active"
+#~ msgstr "активен"
+
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Удалить все снапшоты"
+
#~ msgid "Enable application"
#~ msgstr "Включить приложение"
@@ -8227,9 +8270,6 @@ msgstr "Гуджарати"
#~ "Помните Web-порталы? Вы можете быть одним из них. Многие службы, которыми "
#~ "пользуетесь Вы, могут быть в этой коробке и под Вашим контролем!"
-#~ msgid "System Configuration"
-#~ msgstr "Конфигурация системы"
-
#~ msgid ""
#~ "Here you can administrate the underlying system of your %(box_name)s."
#~ msgstr ""
@@ -8545,9 +8585,6 @@ msgstr "Гуджарати"
#~ msgid "Enable service discovery"
#~ msgstr "Включить обнаружение служб"
-#~ msgid "Network Time Server"
-#~ msgstr "Сетевой сервер времени"
-
#~ msgid "BitTorrent (Deluge)"
#~ msgstr "БитТоррент (Deluge)"
diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po
index cf591faf7..b4d5731c6 100644
--- a/plinth/locale/sl/LC_MESSAGES/django.po
+++ b/plinth/locale/sl/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2019-05-07 20:48+0000\n"
"Last-Translator: Erik Ušaj \n"
"Language-Team: Slovenian instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4403,6 +4413,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -4837,14 +4851,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4852,14 +4866,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4938,20 +4952,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -4959,15 +4973,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -4995,45 +5013,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr ""
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -5096,7 +5110,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5104,96 +5118,107 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid hostname"
@@ -5613,11 +5638,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox"
msgid "FreedomBox Updated"
@@ -5669,7 +5702,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr ""
@@ -5686,11 +5719,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
diff --git a/plinth/locale/sr/LC_MESSAGES/django.po b/plinth/locale/sr/LC_MESSAGES/django.po
index aa4db540b..7bc756c21 100644
--- a/plinth/locale/sr/LC_MESSAGES/django.po
+++ b/plinth/locale/sr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-04-13 05:34+0000\n"
"Last-Translator: vihor \n"
"Language-Team: Serbian instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4291,6 +4301,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -4717,14 +4731,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4732,14 +4746,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4818,20 +4832,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -4839,15 +4853,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -4875,45 +4893,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr ""
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -4974,7 +4988,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4982,96 +4996,107 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr ""
@@ -5481,11 +5506,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
msgid "FreedomBox Updated"
msgstr ""
@@ -5535,7 +5568,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr ""
@@ -5552,11 +5585,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po
index ddd4d5448..6b986c457 100644
--- a/plinth/locale/sv/LC_MESSAGES/django.po
+++ b/plinth/locale/sv/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-05-11 10:41+0000\n"
"Last-Translator: Michael Breidenbach \n"
"Language-Team: Swedish bug tracker "
-"och bifoga denna statuslogg rapport bug-tracker."
+"webbgränssnitt. Om du vill rapportera ett fel, använd bug tracker och "
+"bifoga denna statuslogg rapport bug-tracker."
#: plinth/modules/help/templates/statuslog.html:24
msgid ""
@@ -3782,7 +3783,7 @@ msgstr "Gränssnitt"
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr "Beskrivning"
@@ -4569,6 +4570,15 @@ msgstr ""
"Se SSH-klientinstallation instruktioner"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Starta om eller stänga av systemet."
@@ -4921,6 +4931,12 @@ msgstr "Tillgång till de privata shares"
msgid "Samba"
msgstr "Samba"
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Network Time Server"
+msgid "Network File Storage"
+msgstr "Tidsserver för nätverket"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -5394,7 +5410,7 @@ msgstr "Redigera share"
msgid "Share deleted."
msgstr "Share borttagen."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
@@ -5404,7 +5420,7 @@ msgstr ""
"Dessa kan användas för att återställa systemet till ett tidigare känt skick "
"i händelse av oönskade ändringar i systemet."
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5415,7 +5431,7 @@ msgstr ""
"även före och efter en programvaruinstallation. Äldre ögonblicksbilder "
"kommer att rensas automatiskt enligt inställningarna nedan."
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for säkerhetskopior eftersom de bara kan lagras på "
"samma partition. "
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "Ögonblicksbilder av lagring"
@@ -5514,20 +5530,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "Vill du ta bort följande ögonblicksbilder permanent?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "Nummer"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "Datum"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "Ta bort ögonblicksbilder"
@@ -5535,15 +5551,19 @@ msgstr "Ta bort ögonblicksbilder"
msgid "Create Snapshot"
msgstr "Skapa ögonblicksbild"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "Återställning"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "Aktiva"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "Återställning till ögonblicksbild #%(number)s"
@@ -5555,8 +5575,8 @@ msgid ""
"currently only available on %(types_supported)s filesystems."
msgstr ""
"Du har ett filsystem av typen %(fs_type)s. Ögonblicksbilder "
-"är för närvarande endast tillgängliga på %(types_supported)s"
-" filsystem."
+"är för närvarande endast tillgängliga på %(types_supported)s"
+"strong> filsystem."
#: plinth/modules/snapshot/templates/snapshot_rollback.html:12
msgid "Roll back the system to this snapshot?"
@@ -5577,45 +5597,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "Återställning till ögonblicksbild #%(number)s"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr "Hantera ögonblicksbilder"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "Skapade ögonblicksbild."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr "Lagring ögonblicksbildkonfiguration uppdaterad"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "Åtgärdsfel: {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr "Raderade alla ögonblicksbilder"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr "Borttagna markerade ögonblicksbilder"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr "Ögonblicksbild används för närvarande. Vänligen försök igen senare."
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "Återställs till Snapshot #{number}."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr "Systemet måste startas om för att slutföra återställningen."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "Återställning till ögonblicksbild"
@@ -5685,7 +5701,7 @@ msgstr "Enkel inloggning på"
msgid "Login"
msgstr "Logga in"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5696,98 +5712,109 @@ msgstr ""
"{box_name}. Du kan visa lagringsmedia som för närvarande används, montera "
"och demontera flyttbara media, expandera rotpartitionen etc."
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr "Lagring"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} byte"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} Kib"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} Mib"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} Gib"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} Tib"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr "Åtgärden misslyckades."
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr "Operationen avbröts."
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr "Enheten lossnar redan."
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr "Åtgärden stöds inte på grund av saknade drivrutiner/verktygsstöd."
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr "Åtgärden orsakade timeout."
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "Åtgärden skulle väcka en disk som är i ett djupviloläge."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr "Försöker avmontera en enhet som är upptagen."
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr "Operationen har redan avbrutits."
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr "Inte behörig att utföra den begärda åtgärden."
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr "Enheten är redan monterad."
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr "Enheten är inte monterad."
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr "Inte tillåtet att använda det begärda alternativet."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr "Enheten monteras av en annan användare."
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
"Lågt utrymme på systempartitionen: {percent_used}% används, {free_space} "
"fritt."
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr "Lågt diskutrymme"
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr "Ogiltigt katalognamn."
@@ -6265,11 +6292,19 @@ msgid "Check for and apply the latest software and security updates."
msgstr ""
"Sök efter och installera de senaste program-och säkerhetsuppdateringarna."
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "Uppdatera"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
msgid "FreedomBox Updated"
msgstr "FreedomBox uppdaterad"
@@ -6326,7 +6361,7 @@ msgstr "Växla senaste uppdateringsloggar"
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr "Manuell uppdatering"
@@ -6343,11 +6378,11 @@ msgstr "Automatiska uppgraderingar aktiverade"
msgid "Automatic upgrades disabled"
msgstr "Automatiska uppgraderingar inaktiverade"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "Uppgraderingsprocessen påbörjades."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "Det gick inte att starta uppgraderingen."
@@ -7272,6 +7307,12 @@ msgstr "%(percentage)s %% färdigt"
msgid "Gujarati"
msgstr "Gujarati"
+#~ msgid "active"
+#~ msgstr "Aktiva"
+
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Raderade alla ögonblicksbilder"
+
#~ msgid "Enable application"
#~ msgstr "Aktivera applikation"
@@ -7884,9 +7925,6 @@ msgstr "Gujarati"
#~ msgid "Enable service discovery"
#~ msgstr "Aktivera tjänstidentifiering"
-#~ msgid "Network Time Server"
-#~ msgstr "Tidsserver för nätverket"
-
#~ msgid "BitTorrent (Deluge)"
#~ msgstr "BitTorrent (Deluge)"
diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po
index 6d07c4834..f0527da62 100644
--- a/plinth/locale/ta/LC_MESSAGES/django.po
+++ b/plinth/locale/ta/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -26,27 +26,27 @@ msgstr ""
msgid "FreedomBox"
msgstr ""
-#: plinth/daemon.py:70
+#: plinth/daemon.py:85
#, python-brace-format
msgid "Service {service_name} is running"
msgstr ""
-#: plinth/daemon.py:96
+#: plinth/daemon.py:111
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr ""
-#: plinth/daemon.py:99
+#: plinth/daemon.py:114
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr ""
-#: plinth/daemon.py:167
+#: plinth/daemon.py:182
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr ""
-#: plinth/daemon.py:169
+#: plinth/daemon.py:184
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr ""
@@ -667,6 +667,7 @@ msgid ""
msgstr ""
#: plinth/modules/cockpit/__init__.py:59 plinth/modules/cockpit/manifest.py:12
+#: plinth/modules/performance/manifest.py:11
msgid "Cockpit"
msgstr ""
@@ -695,7 +696,7 @@ msgstr ""
#: plinth/modules/config/__init__.py:57 plinth/modules/dynamicdns/views.py:29
#: plinth/modules/names/templates/names.html:29
#: plinth/modules/names/templates/names.html:43
-#: plinth/modules/snapshot/views.py:26
+#: plinth/modules/snapshot/views.py:28
#: plinth/modules/tahoe/templates/tahoe-pre-setup.html:24
msgid "Configure"
msgstr ""
@@ -827,7 +828,7 @@ msgstr ""
msgid "Coquelicot"
msgstr ""
-#: plinth/modules/coquelicot/__init__.py:47 plinth/modules/samba/__init__.py:63
+#: plinth/modules/coquelicot/__init__.py:47
msgid "File Sharing"
msgstr ""
@@ -1405,17 +1406,17 @@ msgstr ""
msgid "Firewall"
msgstr ""
-#: plinth/modules/firewall/components.py:118
+#: plinth/modules/firewall/components.py:124
#, python-brace-format
msgid "Port {name} ({details}) available for internal networks"
msgstr ""
-#: plinth/modules/firewall/components.py:126
+#: plinth/modules/firewall/components.py:132
#, python-brace-format
msgid "Port {name} ({details}) available for external networks"
msgstr ""
-#: plinth/modules/firewall/components.py:131
+#: plinth/modules/firewall/components.py:137
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@@ -3276,7 +3277,7 @@ msgstr ""
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr ""
@@ -3968,6 +3969,15 @@ msgid ""
"SshOverPageKite/\">instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+msgid "System Monitoring"
+msgstr ""
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4245,6 +4255,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -4671,14 +4685,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4686,14 +4700,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4772,20 +4786,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -4793,15 +4807,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -4829,45 +4847,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr ""
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -4928,7 +4942,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -4936,96 +4950,107 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
msgid "Invalid directory name."
msgstr ""
@@ -5435,11 +5460,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
msgid "FreedomBox Updated"
msgstr ""
@@ -5489,7 +5522,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr ""
@@ -5506,11 +5539,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po
index 6853dfc6c..a2f25e803 100644
--- a/plinth/locale/te/LC_MESSAGES/django.po
+++ b/plinth/locale/te/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2020-04-25 14:11+0000\n"
"Last-Translator: Joseph Nuthalapati \n"
"Language-Team: Telugu సూచనలు "
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "వ్యవస్థ రూపశిల్పం"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "పునఃప్రారంభించండి లేదా సిస్టమ్ మూసివేయండి."
@@ -4804,6 +4816,12 @@ msgstr "ప్రైవేటు షేర్లలో ప్రవేశం"
msgid "Samba"
msgstr "సాంబా"
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Network Time Server"
+msgid "Network File Storage"
+msgstr "అల్లిక సేవిక సమయం"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5318,14 +5336,14 @@ msgstr "వినియోగదారి మార్పు"
msgid "Share deleted."
msgstr "{name} తొలగించబడింది."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5333,14 +5351,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "నిల్వ దృశ్యములు"
@@ -5436,20 +5454,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "క్రింది స్నాప్షాట్లను శాశ్వతంగా తొలగించు ?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "సంఖ్య"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "తేదీ"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "స్నాప్షాట్లను తొలగించు"
@@ -5457,17 +5475,19 @@ msgstr "స్నాప్షాట్లను తొలగించు"
msgid "Create Snapshot"
msgstr "స్నాప్షాట్ని సృష్టించు"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "యథాస్థితి"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-#, fuzzy
-#| msgid "Inactive"
-msgid "active"
-msgstr "క్రియాశీల"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "స్నాప్షాట్కు రోల్బ్యాక్ చేయండి #%(number)s"
@@ -5498,53 +5518,47 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "స్నాప్షాట్ #%(number)s కు రోల్బ్యాక్ చేయండి"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
#, fuzzy
#| msgid "Storage Snapshots"
msgid "Manage Snapshots"
msgstr "నిల్వ దృశ్యములు"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "స్నాప్షాట్ సృష్టించబడినది."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
#, fuzzy
#| msgid "Configuration updated"
msgid "Storage snapshots configuration updated"
msgstr "ఆకృతీకరణ నవీకరించబడింది"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "చర్య లోపం:{0}{1}{2}"
-#: plinth/modules/snapshot/views.py:154
-#, fuzzy
-#| msgid "Deleted all snapshots."
-msgid "Deleted all snapshots"
-msgstr "అన్ని స్నాప్షాట్స్ ని తొలగించండి."
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
#, fuzzy
#| msgid "Delete all the snapshots"
msgid "Deleted selected snapshots"
msgstr "అన్ని స్నాప్షాట్లను తొలగించు"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "స్నాప్షాట్ #{number} కు తీస్కుని వెళ్ళబడింది."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr "రొల్ల్బచ్క్ ని పూర్తి చేయడానికి వ్యవస్థను పునరుద్ధరించాలి."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "చాయాచిత్రం కు రొల్ల్బచ్క్ చేయండి"
@@ -5611,7 +5625,7 @@ msgstr "సింగిల్ సైన్ ఆన్"
msgid "Login"
msgstr "ప్రవేశించు"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5619,103 +5633,114 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
#, fuzzy
msgid "Storage"
msgstr "అన్హొస్టెడ్ స్టోరేజ్ ని (పునరుద్ధరించండి)"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} బైట్లు"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} కిలోబైట్లు"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} మెగాబైట్లు"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} గిగాబైట్లు"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} టెరాబైట్లు"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
#, fuzzy
#| msgid "Mumble server is running"
msgid "The device is already unmounting."
msgstr "మంబ్లు సేవిక నడుస్తుంది"
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr "ఆపరేషన్ టైమవుట్ అయింది."
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr "ఈ ఆపరేషన్ గాఢ నిద్రలో ఉన్న ఒక డిస్క్ ను మేల్కొలుపుతుంది."
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
#, fuzzy
msgid "Attempting to unmount a device that is busy."
msgstr "బిజీగా ఉన్న పరికరాన్ని అన్ మౌంట్ చేయడానికి ప్రయత్నిస్తోంది."
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr "ఆపరేషన్ ఇప్పటికే రద్దు చేయబడింది."
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr "అభ్యర్థించిన ఆపరేషన్ చేయడానికి అధికారం లేదు."
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
#, fuzzy
msgid "The device is already mounted."
msgstr "ఈ సేవ ఇప్పటికే ఉంది"
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
#, fuzzy
#| msgid "Mumble server is not running"
msgid "The device is not mounted."
msgstr "మంబ్లు సేవిక నడవంలేదు"
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr "అభ్యర్థించిన ఎంపికను ఉపయోగించడానికి అనుమతి లేదు."
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr "పరికరం మరొక వినియోగదారుచే మౌంట్ చేయబడింది."
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid hostname"
@@ -6197,11 +6222,19 @@ msgstr "టైనీ టైనీ RSS"
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "నవీకరణ యూ.ఆర్.ఎల్"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox Manual"
msgid "FreedomBox Updated"
@@ -6258,7 +6291,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
#, fuzzy
#| msgid "Last update"
msgid "Manual update"
@@ -6277,11 +6310,11 @@ msgstr "స్వయంచాలక నవీకరణలు ప్రారం
msgid "Automatic upgrades disabled"
msgstr "స్వయంచాలక నవీకరణలు నిలిపివేయబడ్డాయి"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "అప్గ్రేడ్ ప్రక్రియ ప్రారంభించబడింది."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "నవీకరణ ప్రారంభం విఫలమైంది."
@@ -7219,6 +7252,16 @@ msgstr "%(percentage)s %% పూర్తి"
msgid "Gujarati"
msgstr "గుజరాతీ"
+#, fuzzy
+#~| msgid "Inactive"
+#~ msgid "active"
+#~ msgstr "క్రియాశీల"
+
+#, fuzzy
+#~| msgid "Deleted all snapshots."
+#~ msgid "Deleted all snapshots"
+#~ msgstr "అన్ని స్నాప్షాట్స్ ని తొలగించండి."
+
#~ msgid "Enable application"
#~ msgstr "అనువర్తనాన్ని చేతనించు"
@@ -7957,9 +8000,6 @@ msgstr "గుజరాతీ"
#~ "పొర్టల్స్ గుర్తున్నాయా? ఇది దానిలా కూడా మారగలదు. మీరు ఇంటెర్నెట్లో వినియోగించే అనేక సేవలు ఇప్పుడు మీ "
#~ "వద్దనే ఉంటాయి మరియు మీ ఆధీనంలోనే ఉంటాయి!"
-#~ msgid "System Configuration"
-#~ msgstr "వ్యవస్థ రూపశిల్పం"
-
#, fuzzy
#~| msgid "Here you can administrate the underlying system of your {box_name}."
#~ msgid ""
@@ -8205,9 +8245,6 @@ msgstr "గుజరాతీ"
#~ msgid "Enable service discovery"
#~ msgstr "ఆవిష్కరణ సేవను అమలుచెయ్యి"
-#~ msgid "Network Time Server"
-#~ msgstr "అల్లిక సేవిక సమయం"
-
#~ msgid "BitTorrent (Deluge)"
#~ msgstr "బిట్ టొర్రెంట్ (ప్రళయం)"
diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po
index 0c9283976..129eb6a0d 100644
--- a/plinth/locale/tr/LC_MESSAGES/django.po
+++ b/plinth/locale/tr/LC_MESSAGES/django.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2019-08-08 00:22+0000\n"
"Last-Translator: Mesut Akcan \n"
"Language-Team: Turkish %(service_name)s is running."
msgid "Service {service_name} is running"
msgstr "%(service_name)s servisi çalışmaktadır."
-#: plinth/daemon.py:96
+#: plinth/daemon.py:111
#, python-brace-format
msgid "Listening on {kind} port {listen_address}:{port}"
msgstr "{kind} port {listen_address}:{port} dinleniyor"
-#: plinth/daemon.py:99
+#: plinth/daemon.py:114
#, python-brace-format
msgid "Listening on {kind} port {port}"
msgstr "{kind} port {port} dinleniyor"
-#: plinth/daemon.py:167
+#: plinth/daemon.py:182
#, python-brace-format
msgid "Connect to {host}:{port}"
msgstr "{host}:{port} konumuna bağlan"
-#: plinth/daemon.py:169
+#: plinth/daemon.py:184
#, python-brace-format
msgid "Cannot connect to {host}:{port}"
msgstr "{host}:{port} konumuna bağlanılamadı"
@@ -762,6 +762,7 @@ msgid ""
msgstr ""
#: plinth/modules/cockpit/__init__.py:59 plinth/modules/cockpit/manifest.py:12
+#: plinth/modules/performance/manifest.py:11
msgid "Cockpit"
msgstr "Cockpit"
@@ -792,7 +793,7 @@ msgstr "Genel Yapılandırma"
#: plinth/modules/config/__init__.py:57 plinth/modules/dynamicdns/views.py:29
#: plinth/modules/names/templates/names.html:29
#: plinth/modules/names/templates/names.html:43
-#: plinth/modules/snapshot/views.py:26
+#: plinth/modules/snapshot/views.py:28
#: plinth/modules/tahoe/templates/tahoe-pre-setup.html:24
msgid "Configure"
msgstr "Yapılandır"
@@ -934,7 +935,7 @@ msgstr ""
msgid "Coquelicot"
msgstr ""
-#: plinth/modules/coquelicot/__init__.py:47 plinth/modules/samba/__init__.py:63
+#: plinth/modules/coquelicot/__init__.py:47
msgid "File Sharing"
msgstr "Dosya paylaşımı"
@@ -1629,19 +1630,19 @@ msgstr ""
msgid "Firewall"
msgstr "Güvenlik Duvarı"
-#: plinth/modules/firewall/components.py:118
+#: plinth/modules/firewall/components.py:124
#, fuzzy, python-brace-format
#| msgid "Service %(service_name)s is not running."
msgid "Port {name} ({details}) available for internal networks"
msgstr "%(service_name)s servisi çalışmamaktadır."
-#: plinth/modules/firewall/components.py:126
+#: plinth/modules/firewall/components.py:132
#, fuzzy, python-brace-format
#| msgid "Service %(service_name)s is not running."
msgid "Port {name} ({details}) available for external networks"
msgstr "%(service_name)s servisi çalışmamaktadır."
-#: plinth/modules/firewall/components.py:131
+#: plinth/modules/firewall/components.py:137
#, python-brace-format
msgid "Port {name} ({details}) unavailable for external networks"
msgstr ""
@@ -3811,7 +3812,7 @@ msgstr "Arayüz"
#: plinth/modules/networks/templates/connection_show.html:95
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:18
-#: plinth/modules/snapshot/templates/snapshot_manage.html:30
+#: plinth/modules/snapshot/templates/snapshot_manage.html:31
#: plinth/modules/snapshot/templates/snapshot_rollback.html:26
msgid "Description"
msgstr "Açıklama"
@@ -4598,6 +4599,17 @@ msgstr ""
"SSH istemci kurulum talimatlarını okuyun"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "Sistem Yapılandırması"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "Sistemi tekrar başlat ya da kapat."
@@ -4962,6 +4974,12 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Network Time Server"
+msgid "Network File Storage"
+msgstr "Ağ Zaman Sunucusu"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5480,7 +5498,7 @@ msgstr "Kullanıcıyı Düzenle"
msgid "Share deleted."
msgstr "{name} silindi."
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
#, fuzzy
#| msgid ""
#| "Snapshots allows creating and managing filesystem snapshots. These can be "
@@ -5495,7 +5513,7 @@ msgstr ""
"verir. Bunlar, sisteme istenmeyen değişiklikler yapılması durumunda sistemin "
"daha önce bilinen iyi bir duruma geri getirilmesini sağlar."
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5503,14 +5521,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr "Depolama Anlıkları"
@@ -5605,20 +5623,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "Bu anlıklar daimi olarak silinsin mi?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "Sayı"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "Tarih"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr "Anlıkları Sil"
@@ -5626,15 +5644,19 @@ msgstr "Anlıkları Sil"
msgid "Create Snapshot"
msgstr "Anlık Oluştur"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "Geri getir"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "etkin"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "#%(number)s sayılı anlığa geri getir"
@@ -5665,54 +5687,48 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "#%(number)s sayılı anlığa geri al"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
#, fuzzy
#| msgid "Storage Snapshots"
msgid "Manage Snapshots"
msgstr "Depolama Anlıkları"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "Anlık oluşturuldu."
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
#, fuzzy
#| msgid "Timeline Snapshots configuration updated"
msgid "Storage snapshots configuration updated"
msgstr "Zaman Çizelgesi Anlıklarının yapılandırması güncellendi"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "Eylem hatası: {0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-#, fuzzy
-#| msgid "Deleted all snapshots."
-msgid "Deleted all snapshots"
-msgstr "Tüm anlıklar silindi."
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
#, fuzzy
#| msgid "Delete all the snapshots"
msgid "Deleted selected snapshots"
msgstr "Tüm anlıkları sil"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "#{number} sayılı anlığa geri alındı."
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
"Geri alınmanın tamamlanması için sistemin yeniden başlatılması gereklidir."
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "Anlığa Geri Al"
@@ -5783,7 +5799,7 @@ msgstr "Tekli Oturum Açma"
msgid "Login"
msgstr "Giriş"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5791,94 +5807,94 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr "Depolama"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size:.1f} bayt"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size:.1f} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size:.1f} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size:.1f} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size:.1f} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
#, fuzzy
#| msgid "repro service is running"
msgid "The device is already unmounting."
msgstr "repro servisi çalışmaktadır"
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
#, fuzzy
#| msgid "This service already exists"
msgid "The device is already mounted."
msgstr "Bu servis zaten mevcuttur"
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
#, fuzzy
#| msgid "repro service is not running"
msgid "The device is not mounted."
msgstr "repro servisi çalışmamaktadır"
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, fuzzy, no-python-format, python-brace-format
#| msgid ""
#| "Warning: Low space on system partition ({percent_used}% used, "
@@ -5888,10 +5904,21 @@ msgstr ""
"İkaz: sistem disk bölümünde düşük alan (%{percent_used} kullanıldı, "
"{free_space} boş)."
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid hostname"
@@ -6414,11 +6441,19 @@ msgstr "Tiny Tiny RSS"
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "Güncelle"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox Foundation"
msgid "FreedomBox Updated"
@@ -6485,7 +6520,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
#, fuzzy
#| msgid "Last update"
msgid "Manual update"
@@ -6504,11 +6539,11 @@ msgstr "Otomatik yükseltmeler etkinleştirildi"
msgid "Automatic upgrades disabled"
msgstr "Otomatik yükseltmeler devre dışı bırakıldı"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "Yükseltme süreci başlamıştır."
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "Yükseltmenin başlatılması başarısız oldu."
@@ -7487,6 +7522,14 @@ msgstr "%(percentage)s%% tamamlandı"
msgid "Gujarati"
msgstr ""
+#~ msgid "active"
+#~ msgstr "etkin"
+
+#, fuzzy
+#~| msgid "Deleted all snapshots."
+#~ msgid "Deleted all snapshots"
+#~ msgstr "Tüm anlıklar silindi."
+
#~ msgid "Enable application"
#~ msgstr "Uygulamayı etkinleştir"
@@ -8271,9 +8314,6 @@ msgstr ""
#~ "Onlardan biri de olabiliriz. Web üzerinde kullandığınız servislerin "
#~ "birçoğu yakında sizin evinizde ve sizin kontrolünüzde olabileceklerdir!"
-#~ msgid "System Configuration"
-#~ msgstr "Sistem Yapılandırması"
-
#~ msgid ""
#~ "Here you can administrate the underlying system of your %(box_name)s."
#~ msgstr "Burada %(box_name)s kutunuzun temel sistemini yönetebilirsiniz."
@@ -8603,9 +8643,6 @@ msgstr ""
#~ msgid "Enable service discovery"
#~ msgstr "Servis keşfini etkinleştir"
-#~ msgid "Network Time Server"
-#~ msgstr "Ağ Zaman Sunucusu"
-
#~ msgid "BitTorrent (Deluge)"
#~ msgstr "BitTorrent (Deluge)"
diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po
index 61a06a161..f9cb438e4 100644
--- a/plinth/locale/uk/LC_MESSAGES/django.po
+++ b/plinth/locale/uk/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2019-01-04 17:06+0000\n"
"Last-Translator: prolinux ukraine \n"
"Language-Team: Ukrainian instructions"
msgstr ""
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "Конфігурація системи"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr ""
@@ -4341,6 +4353,10 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+msgid "Network File Storage"
+msgstr ""
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
msgid "Shares"
@@ -4775,14 +4791,14 @@ msgstr ""
msgid "Share deleted."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
msgid ""
"Snapshots allows creating and managing btrfs file system snapshots. These "
"can be used to roll back the system to a previously known good state in case "
"of unwanted changes to the system."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -4790,14 +4806,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
msgid "Storage Snapshots"
msgstr ""
@@ -4876,20 +4892,20 @@ msgid "Delete the following snapshots permanently?"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
msgid "Delete Snapshots"
msgstr ""
@@ -4897,15 +4913,19 @@ msgstr ""
msgid "Create Snapshot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr ""
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
+msgid "will be used at next boot"
msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr ""
@@ -4933,45 +4953,41 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr ""
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
msgid "Manage Snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr ""
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
msgid "Storage snapshots configuration updated"
msgstr ""
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr ""
-#: plinth/modules/snapshot/views.py:154
-msgid "Deleted all snapshots"
-msgstr ""
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
msgid "Deleted selected snapshots"
msgstr ""
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr ""
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr ""
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr ""
@@ -5032,7 +5048,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5040,96 +5056,107 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
msgid "Storage"
msgstr ""
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, python-brace-format
msgid "{disk_size:.1f} bytes"
msgstr ""
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, python-brace-format
msgid "{disk_size:.1f} KiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, python-brace-format
msgid "{disk_size:.1f} MiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, python-brace-format
msgid "{disk_size:.1f} GiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, python-brace-format
msgid "{disk_size:.1f} TiB"
msgstr ""
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
msgid "The device is already unmounting."
msgstr ""
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
msgid "The device is already mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
msgid "The device is not mounted."
msgstr ""
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Repository not found"
@@ -5541,11 +5568,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr ""
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox"
msgid "FreedomBox Updated"
@@ -5597,7 +5632,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
msgid "Manual update"
msgstr ""
@@ -5614,11 +5649,11 @@ msgstr ""
msgid "Automatic upgrades disabled"
msgstr ""
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr ""
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr ""
@@ -6529,6 +6564,3 @@ msgstr ""
#~ msgid "Currently only limited functionality is available."
#~ msgstr "На даний час доступний лише обмежений функціонал."
-
-#~ msgid "System Configuration"
-#~ msgstr "Конфігурація системи"
diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po
index a9df460df..e40750b79 100644
--- a/plinth/locale/zh_Hans/LC_MESSAGES/django.po
+++ b/plinth/locale/zh_Hans/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Plinth\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-05-04 19:59-0400\n"
+"POT-Creation-Date: 2020-05-18 18:36-0400\n"
"PO-Revision-Date: 2019-09-13 05:23+0000\n"
"Last-Translator: Anxin YI <2732146152@qq.com>\n"
"Language-Team: Chinese (Simplified) 说明"
+#: plinth/modules/performance/__init__.py:16
+#: plinth/modules/performance/__init__.py:45
+msgid "Performance"
+msgstr ""
+
+#: plinth/modules/performance/__init__.py:46
+#, fuzzy
+#| msgid "System Configuration"
+msgid "System Monitoring"
+msgstr "系统配置"
+
#: plinth/modules/power/__init__.py:16
msgid "Restart or shut down the system."
msgstr "重新启动或关闭系统。"
@@ -4820,6 +4832,12 @@ msgstr ""
msgid "Samba"
msgstr ""
+#: plinth/modules/samba/__init__.py:63
+#, fuzzy
+#| msgid "Network Time Server"
+msgid "Network File Storage"
+msgstr "网络时间服务器"
+
#: plinth/modules/samba/templates/samba.html:24
#: plinth/modules/samba/templates/samba.html:35
#, fuzzy
@@ -5337,7 +5355,7 @@ msgstr "编辑用户"
msgid "Share deleted."
msgstr "{name} 已删除。"
-#: plinth/modules/snapshot/__init__.py:23
+#: plinth/modules/snapshot/__init__.py:25
#, fuzzy
#| msgid ""
#| "Snapshots allows creating and managing filesystem snapshots. These can be "
@@ -5351,7 +5369,7 @@ msgstr ""
"快照可以允许创建并管理文件系统快照。这些可以用来回滚系统到前一个已知可用的状"
"态,以防意外改变系统状态。"
-#: plinth/modules/snapshot/__init__.py:27
+#: plinth/modules/snapshot/__init__.py:29
#, no-python-format
msgid ""
"Snapshots are taken periodically (called timeline snapshots) and also before "
@@ -5359,14 +5377,14 @@ msgid ""
"cleaned up according to the settings below."
msgstr ""
-#: plinth/modules/snapshot/__init__.py:30
+#: plinth/modules/snapshot/__init__.py:32
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. "
msgstr ""
-#: plinth/modules/snapshot/__init__.py:52
+#: plinth/modules/snapshot/__init__.py:54
#, fuzzy
#| msgid "Create Snapshot"
msgid "Storage Snapshots"
@@ -5459,20 +5477,20 @@ msgid "Delete the following snapshots permanently?"
msgstr "永久删除此快照?"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16
-#: plinth/modules/snapshot/templates/snapshot_manage.html:28
+#: plinth/modules/snapshot/templates/snapshot_manage.html:29
#: plinth/modules/snapshot/templates/snapshot_rollback.html:24
msgid "Number"
msgstr "编号"
#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:17
-#: plinth/modules/snapshot/templates/snapshot_manage.html:29
+#: plinth/modules/snapshot/templates/snapshot_manage.html:30
#: plinth/modules/snapshot/templates/snapshot_rollback.html:25
msgid "Date"
msgstr "日期"
-#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:37
+#: plinth/modules/snapshot/templates/snapshot_delete_selected.html:40
#: plinth/modules/snapshot/templates/snapshot_manage.html:22
-#: plinth/modules/snapshot/views.py:175
+#: plinth/modules/snapshot/views.py:189
#, fuzzy
#| msgid "Delete Snapshot"
msgid "Delete Snapshots"
@@ -5482,15 +5500,19 @@ msgstr "删除快照"
msgid "Create Snapshot"
msgstr "创建快照"
-#: plinth/modules/snapshot/templates/snapshot_manage.html:31
+#: plinth/modules/snapshot/templates/snapshot_manage.html:32
msgid "Rollback"
msgstr "回滚"
#: plinth/modules/snapshot/templates/snapshot_manage.html:42
-msgid "active"
-msgstr "激活"
+msgid "will be used at next boot"
+msgstr ""
-#: plinth/modules/snapshot/templates/snapshot_manage.html:51
+#: plinth/modules/snapshot/templates/snapshot_manage.html:47
+msgid "in use"
+msgstr ""
+
+#: plinth/modules/snapshot/templates/snapshot_manage.html:56
#, python-format
msgid "Rollback to snapshot #%(number)s"
msgstr "回滚到快照 #%(number)s"
@@ -5520,53 +5542,47 @@ msgstr ""
msgid "Rollback to Snapshot #%(number)s"
msgstr "回滚到快照 #%(number)s"
-#: plinth/modules/snapshot/views.py:30
+#: plinth/modules/snapshot/views.py:32
#, fuzzy
#| msgid "Create Snapshot"
msgid "Manage Snapshots"
msgstr "创建快照"
-#: plinth/modules/snapshot/views.py:79
+#: plinth/modules/snapshot/views.py:81
msgid "Created snapshot."
msgstr "创建快照。"
-#: plinth/modules/snapshot/views.py:135
+#: plinth/modules/snapshot/views.py:144
#, fuzzy
#| msgid "Access rights configuration updated"
msgid "Storage snapshots configuration updated"
msgstr "访问权配置已更新"
-#: plinth/modules/snapshot/views.py:139 plinth/modules/tor/views.py:59
+#: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:59
#, python-brace-format
msgid "Action error: {0} [{1}] [{2}]"
msgstr "操作错误:{0} [{1}] [{2}]"
-#: plinth/modules/snapshot/views.py:154
-#, fuzzy
-#| msgid "Delete Snapshot"
-msgid "Deleted all snapshots"
-msgstr "删除快照"
-
-#: plinth/modules/snapshot/views.py:158
+#: plinth/modules/snapshot/views.py:176
#, fuzzy
#| msgid "Delete Snapshot"
msgid "Deleted selected snapshots"
msgstr "删除快照"
-#: plinth/modules/snapshot/views.py:163
+#: plinth/modules/snapshot/views.py:181
msgid "Snapshot is currently in use. Please try again later."
msgstr ""
-#: plinth/modules/snapshot/views.py:186
+#: plinth/modules/snapshot/views.py:200
#, python-brace-format
msgid "Rolled back to snapshot #{number}."
msgstr "回滚到快照 #{number}。"
-#: plinth/modules/snapshot/views.py:189
+#: plinth/modules/snapshot/views.py:203
msgid "The system must be restarted to complete the rollback."
msgstr "系统需要重启以完成完全回滚。"
-#: plinth/modules/snapshot/views.py:201
+#: plinth/modules/snapshot/views.py:215
msgid "Rollback to Snapshot"
msgstr "回滚到快照"
@@ -5635,7 +5651,7 @@ msgstr ""
msgid "Login"
msgstr "登录"
-#: plinth/modules/storage/__init__.py:30
+#: plinth/modules/storage/__init__.py:29
#, python-brace-format
msgid ""
"This module allows you to manage storage media attached to your {box_name}. "
@@ -5643,109 +5659,120 @@ msgid ""
"media, expand the root partition etc."
msgstr ""
-#: plinth/modules/storage/__init__.py:54 plinth/modules/storage/__init__.py:320
+#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319
#, fuzzy
#| msgid "reStore"
msgid "Storage"
msgstr "reStore"
-#: plinth/modules/storage/__init__.py:213
+#: plinth/modules/storage/__init__.py:212
#, fuzzy, python-brace-format
#| msgid "{disk_size} bytes"
msgid "{disk_size:.1f} bytes"
msgstr "{disk_size} bytes"
-#: plinth/modules/storage/__init__.py:217
+#: plinth/modules/storage/__init__.py:216
#, fuzzy, python-brace-format
#| msgid "{disk_size} KiB"
msgid "{disk_size:.1f} KiB"
msgstr "{disk_size} KiB"
-#: plinth/modules/storage/__init__.py:221
+#: plinth/modules/storage/__init__.py:220
#, fuzzy, python-brace-format
#| msgid "{disk_size} MiB"
msgid "{disk_size:.1f} MiB"
msgstr "{disk_size} MiB"
-#: plinth/modules/storage/__init__.py:225
+#: plinth/modules/storage/__init__.py:224
#, fuzzy, python-brace-format
#| msgid "{disk_size} GiB"
msgid "{disk_size:.1f} GiB"
msgstr "{disk_size} GiB"
-#: plinth/modules/storage/__init__.py:228
+#: plinth/modules/storage/__init__.py:227
#, fuzzy, python-brace-format
#| msgid "{disk_size} TiB"
msgid "{disk_size:.1f} TiB"
msgstr "{disk_size} TiB"
-#: plinth/modules/storage/__init__.py:235
+#: plinth/modules/storage/__init__.py:234
msgid "The operation failed."
msgstr ""
-#: plinth/modules/storage/__init__.py:237
+#: plinth/modules/storage/__init__.py:236
msgid "The operation was cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:239
+#: plinth/modules/storage/__init__.py:238
#, fuzzy
#| msgid "repro service is running"
msgid "The device is already unmounting."
msgstr "repro 服务正在运行"
-#: plinth/modules/storage/__init__.py:241
+#: plinth/modules/storage/__init__.py:240
msgid "The operation is not supported due to missing driver/tool support."
msgstr ""
-#: plinth/modules/storage/__init__.py:244
+#: plinth/modules/storage/__init__.py:243
msgid "The operation timed out."
msgstr ""
-#: plinth/modules/storage/__init__.py:246
+#: plinth/modules/storage/__init__.py:245
msgid "The operation would wake up a disk that is in a deep-sleep state."
msgstr ""
-#: plinth/modules/storage/__init__.py:249
+#: plinth/modules/storage/__init__.py:248
msgid "Attempting to unmount a device that is busy."
msgstr ""
-#: plinth/modules/storage/__init__.py:251
+#: plinth/modules/storage/__init__.py:250
msgid "The operation has already been cancelled."
msgstr ""
-#: plinth/modules/storage/__init__.py:257
+#: plinth/modules/storage/__init__.py:256
msgid "Not authorized to perform the requested operation."
msgstr ""
-#: plinth/modules/storage/__init__.py:259
+#: plinth/modules/storage/__init__.py:258
#, fuzzy
#| msgid "This service already exists"
msgid "The device is already mounted."
msgstr "此服务已存在"
-#: plinth/modules/storage/__init__.py:261
+#: plinth/modules/storage/__init__.py:260
#, fuzzy
#| msgid "repro service is not running"
msgid "The device is not mounted."
msgstr "repro 服务未运行"
-#: plinth/modules/storage/__init__.py:264
+#: plinth/modules/storage/__init__.py:263
msgid "Not permitted to use the requested option."
msgstr ""
-#: plinth/modules/storage/__init__.py:267
+#: plinth/modules/storage/__init__.py:266
msgid "The device is mounted by another user."
msgstr ""
-#: plinth/modules/storage/__init__.py:315
+#: plinth/modules/storage/__init__.py:314
#, no-python-format, python-brace-format
msgid "Low space on system partition: {percent_used}% used, {free_space} free."
msgstr ""
-#: plinth/modules/storage/__init__.py:317
+#: plinth/modules/storage/__init__.py:316
msgid "Low disk space"
msgstr ""
+#: plinth/modules/storage/__init__.py:344
+msgid "Disk failure imminent"
+msgstr ""
+
+#: plinth/modules/storage/__init__.py:346
+#, python-brace-format
+msgid ""
+"Disk {id} is reporting that it is likely to fail in the near future. Copy "
+"any data while you still can and replace the drive."
+msgstr ""
+
#: plinth/modules/storage/forms.py:63
#, fuzzy
#| msgid "Invalid hostname"
@@ -6216,11 +6243,19 @@ msgstr ""
msgid "Check for and apply the latest software and security updates."
msgstr ""
-#: plinth/modules/upgrades/__init__.py:40 plinth/templates/setup.html:74
+#: plinth/modules/upgrades/__init__.py:24
+msgid ""
+"Updates are run at 06:00 everyday according to local time zone. Set your "
+"time zone in Date & Time app. Apps are restarted after update causing them "
+"to be unavailable briefly. If system reboot is deemed necessary, it is done "
+"automatically at 02:00 causing all apps to be unavailable briefly."
+msgstr ""
+
+#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:74
msgid "Update"
msgstr "更新"
-#: plinth/modules/upgrades/__init__.py:78
+#: plinth/modules/upgrades/__init__.py:83
#, fuzzy
#| msgid "FreedomBox"
msgid "FreedomBox Updated"
@@ -6286,7 +6321,7 @@ msgstr ""
#: plinth/modules/upgrades/templates/upgrades_configure.html:11
#: plinth/modules/upgrades/templates/upgrades_configure.html:12
-#: plinth/modules/upgrades/views.py:85
+#: plinth/modules/upgrades/views.py:76
#, fuzzy
#| msgid "Last update"
msgid "Manual update"
@@ -6305,11 +6340,11 @@ msgstr "已启用自动升级"
msgid "Automatic upgrades disabled"
msgstr "已禁用自动升级"
-#: plinth/modules/upgrades/views.py:79
+#: plinth/modules/upgrades/views.py:70
msgid "Upgrade process started."
msgstr "升级过程开始。"
-#: plinth/modules/upgrades/views.py:82
+#: plinth/modules/upgrades/views.py:73
msgid "Starting upgrade failed."
msgstr "开始升级失败。"
@@ -7308,6 +7343,14 @@ msgstr "已完成 %(percentage)s%%"
msgid "Gujarati"
msgstr "古吉拉特语"
+#~ msgid "active"
+#~ msgstr "激活"
+
+#, fuzzy
+#~| msgid "Delete Snapshot"
+#~ msgid "Deleted all snapshots"
+#~ msgstr "删除快照"
+
#~ msgid "Enable application"
#~ msgstr "启用应用程序"
@@ -7859,9 +7902,6 @@ msgstr "古吉拉特语"
#~ "点。 还记得门户网站吗?我们也可以是那些之一。 您在 web 上使用的服务和网站"
#~ "上很快都会在你控制之下!"
-#~ msgid "System Configuration"
-#~ msgstr "系统配置"
-
#, fuzzy
#~| msgid "Here you can administrate the underlying system of your {box_name}."
#~ msgid ""
@@ -8161,9 +8201,6 @@ msgstr "古吉拉特语"
#~ msgid "Enable service discovery"
#~ msgstr "启用服务发现"
-#~ msgid "Network Time Server"
-#~ msgstr "网络时间服务器"
-
#~ msgid "BitTorrent (Deluge)"
#~ msgstr "BitTorrent 下载(Deluge)"
From eac1256b4b4454774b36b1c74e1a3bc6dd8a2939 Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Mon, 18 May 2020 19:42:28 -0400
Subject: [PATCH 39/40] doc: Fetch latest manual
Signed-off-by: James Valleroy
---
doc/manual/en/Apache_userdir.raw.xml | 2 +-
doc/manual/en/Backups.raw.xml | 2 +-
doc/manual/en/Cockpit.raw.xml | 2 +-
doc/manual/en/Configure.raw.xml | 2 +-
doc/manual/en/Coquelicot.raw.xml | 2 +-
doc/manual/en/Coturn.raw.xml | 4 +
doc/manual/en/DateTime.raw.xml | 2 +-
doc/manual/en/Deluge.raw.xml | 2 +-
doc/manual/en/Diagnostics.raw.xml | 2 +-
doc/manual/en/DynamicDNS.raw.xml | 2 +-
doc/manual/en/Firewall.raw.xml | 2 +-
doc/manual/en/GitWeb.raw.xml | 2 +-
doc/manual/en/I2P.raw.xml | 2 +-
doc/manual/en/Ikiwiki.raw.xml | 2 +-
doc/manual/en/Infinoted.raw.xml | 2 +-
doc/manual/en/LetsEncrypt.raw.xml | 2 +-
doc/manual/en/MLDonkey.raw.xml | 2 +-
doc/manual/en/MatrixSynapse.raw.xml | 2 +-
doc/manual/en/MediaWiki.raw.xml | 2 +-
doc/manual/en/Minetest.raw.xml | 2 +-
doc/manual/en/MiniDLNA.raw.xml | 2 +-
doc/manual/en/Monkeysphere.raw.xml | 2 +-
doc/manual/en/Mumble.raw.xml | 2 +-
doc/manual/en/NameServices.raw.xml | 2 +-
doc/manual/en/Networks.raw.xml | 2 +-
doc/manual/en/OpenVPN.raw.xml | 2 +-
doc/manual/en/PageKite.raw.xml | 2 +-
doc/manual/en/Performance.raw.xml | 2 +-
doc/manual/en/Power.raw.xml | 2 +-
doc/manual/en/Privoxy.raw.xml | 2 +-
doc/manual/en/Quassel.raw.xml | 2 +-
doc/manual/en/Radicale.raw.xml | 4 +-
doc/manual/en/Repro.raw.xml | 2 +-
doc/manual/en/Roundcube.raw.xml | 2 +-
doc/manual/en/Samba.raw.xml | 2 +-
doc/manual/en/Searx.raw.xml | 2 +-
doc/manual/en/SecureShell.raw.xml | 2 +-
doc/manual/en/Security.raw.xml | 2 +-
doc/manual/en/ServiceDiscovery.raw.xml | 2 +-
doc/manual/en/Shadowsocks.raw.xml | 2 +-
doc/manual/en/Snapshots.raw.xml | 2 +-
doc/manual/en/Storage.raw.xml | 2 +-
doc/manual/en/Syncthing.raw.xml | 2 +-
doc/manual/en/TinyTinyRSS.raw.xml | 2 +-
doc/manual/en/Tor.raw.xml | 2 +-
doc/manual/en/Transmission.raw.xml | 2 +-
doc/manual/en/Upgrades.raw.xml | 2 +-
doc/manual/en/Users.raw.xml | 2 +-
doc/manual/en/ejabberd.raw.xml | 2 +-
doc/manual/en/freedombox-manual.raw.xml | 215 +++++++++++--
.../images/Quassel_PortForwarding_en_v01.png | Bin 0 -> 45458 bytes
doc/manual/en/images/performance-one-week.png | Bin 0 -> 45838 bytes
doc/manual/es/Apache_userdir.raw.xml | 2 +-
doc/manual/es/Backups.raw.xml | 2 +-
doc/manual/es/Cockpit.raw.xml | 2 +-
doc/manual/es/Configure.raw.xml | 2 +-
doc/manual/es/Coquelicot.raw.xml | 2 +-
doc/manual/es/Coturn.raw.xml | 4 +
doc/manual/es/DateTime.raw.xml | 2 +-
doc/manual/es/Deluge.raw.xml | 2 +-
doc/manual/es/Diagnostics.raw.xml | 2 +-
doc/manual/es/DynamicDNS.raw.xml | 2 +-
doc/manual/es/Firewall.raw.xml | 4 +-
doc/manual/es/GitWeb.raw.xml | 2 +-
doc/manual/es/I2P.raw.xml | 2 +-
doc/manual/es/Ikiwiki.raw.xml | 2 +-
doc/manual/es/Infinoted.raw.xml | 2 +-
doc/manual/es/LetsEncrypt.raw.xml | 2 +-
doc/manual/es/MLDonkey.raw.xml | 2 +-
doc/manual/es/MatrixSynapse.raw.xml | 2 +-
doc/manual/es/MediaWiki.raw.xml | 2 +-
doc/manual/es/Minetest.raw.xml | 2 +-
doc/manual/es/MiniDLNA.raw.xml | 2 +-
doc/manual/es/Monkeysphere.raw.xml | 2 +-
doc/manual/es/Mumble.raw.xml | 2 +-
doc/manual/es/NameServices.raw.xml | 2 +-
doc/manual/es/Networks.raw.xml | 2 +-
doc/manual/es/OpenVPN.raw.xml | 2 +-
doc/manual/es/PageKite.raw.xml | 2 +-
doc/manual/es/Power.raw.xml | 2 +-
doc/manual/es/Privoxy.raw.xml | 2 +-
doc/manual/es/Quassel.raw.xml | 2 +-
doc/manual/es/Radicale.raw.xml | 4 +-
doc/manual/es/Repro.raw.xml | 2 +-
doc/manual/es/Roundcube.raw.xml | 2 +-
doc/manual/es/Samba.raw.xml | 2 +-
doc/manual/es/Searx.raw.xml | 2 +-
doc/manual/es/SecureShell.raw.xml | 2 +-
doc/manual/es/Security.raw.xml | 2 +-
doc/manual/es/ServiceDiscovery.raw.xml | 2 +-
doc/manual/es/Shadowsocks.raw.xml | 2 +-
doc/manual/es/Snapshots.raw.xml | 2 +-
doc/manual/es/Storage.raw.xml | 2 +-
doc/manual/es/Syncthing.raw.xml | 2 +-
doc/manual/es/TinyTinyRSS.raw.xml | 2 +-
doc/manual/es/Tor.raw.xml | 2 +-
doc/manual/es/Transmission.raw.xml | 2 +-
doc/manual/es/Upgrades.raw.xml | 2 +-
doc/manual/es/Users.raw.xml | 2 +-
doc/manual/es/ejabberd.raw.xml | 2 +-
doc/manual/es/freedombox-manual.raw.xml | 293 ++++++++++++++----
.../es/images/Quassel_Installation_es_v01.png | Bin 0 -> 74560 bytes
.../images/Quassel_PortForwarding_es_v01.png | Bin 0 -> 45458 bytes
...uassel-client-1-connect-to-core_es_v01.png | Bin 0 -> 59138 bytes
...uassel-client-10-setup-identity_es_v01.png | Bin 0 -> 67502 bytes
...ent-11-setup-network-connection_es_v02.png | Bin 0 -> 77798 bytes
.../quassel-client-12-server-info_es_v01.png | Bin 0 -> 58294 bytes
...assel-client-13-server-info-ssl_es_v01.png | Bin 0 -> 61612 bytes
...ent-14-setup-network-connection_es_v01.png | Bin 0 -> 58947 bytes
.../quassel-client-15-quassel-main_es_v01.png | Bin 0 -> 311999 bytes
...assel-client-2-add-core-account_es_v01.png | Bin 0 -> 120295 bytes
...uassel-client-3-connect-to-core_es_v01.png | Bin 0 -> 67173 bytes
...4-untrusted-security-certficate_es_v01.png | Bin 0 -> 98602 bytes
...-untrusted-security-certificate_es_v01.png | Bin 0 -> 47963 bytes
...ssel-client-7-create-admin-user_es_v01.png | Bin 0 -> 153981 bytes
...client-8-select-storage-backend_es_v01.png | Bin 0 -> 147108 bytes
...quassel-client-9-welcome-wizard_es_v01.png | Bin 0 -> 94002 bytes
117 files changed, 531 insertions(+), 181 deletions(-)
create mode 100644 doc/manual/en/Coturn.raw.xml
create mode 100644 doc/manual/en/images/Quassel_PortForwarding_en_v01.png
create mode 100644 doc/manual/en/images/performance-one-week.png
create mode 100644 doc/manual/es/Coturn.raw.xml
create mode 100644 doc/manual/es/images/Quassel_Installation_es_v01.png
create mode 100644 doc/manual/es/images/Quassel_PortForwarding_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-1-connect-to-core_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-10-setup-identity_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-11-setup-network-connection_es_v02.png
create mode 100644 doc/manual/es/images/quassel-client-12-server-info_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-13-server-info-ssl_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-14-setup-network-connection_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-15-quassel-main_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-2-add-core-account_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-3-connect-to-core_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-4-untrusted-security-certficate_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-5-untrusted-security-certificate_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-7-create-admin-user_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-8-select-storage-backend_es_v01.png
create mode 100644 doc/manual/es/images/quassel-client-9-welcome-wizard_es_v01.png
diff --git a/doc/manual/en/Apache_userdir.raw.xml b/doc/manual/en/Apache_userdir.raw.xml
index 56d1832f2..0ac0f6dc3 100644
--- a/doc/manual/en/Apache_userdir.raw.xml
+++ b/doc/manual/en/Apache_userdir.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Apache_userdir62020-02-26 22:51:55JamesValleroyrephrase52020-02-26 22:50:33JamesValleroyPlinth -> FreedomBox42020-02-26 22:49:27JamesValleroysimply wording32019-02-27 00:08:57JamesValleroyremove wiki links22019-02-17 21:44:22MikkelKirkgaardNielsenrefer to ourselves as User websites, add basics table from new template12019-02-13 23:15:52MikkelKirkgaardNielsenadd draft pageUser websites (userdir)What is User websites?User websites is a module of the Apache webserver enabled to allow users defined in the FreedomBox system to expose a set of static files on the FreedomBox filesystem as a website to the local network and/or the internet according to the network and firewall setup. Application basicsCategory File sharing Available since version 0.9.4Upstream project website Upstream end user documentation ScreenshotAdd when/if an interface is made for FreedomBoxUsing User websitesThe module is always enabled and offers no configuration from the FreedomBox web interface. There is no configuration or status page shown for this module in the FreedomBox web interface. To serve documents, place the files in the designated directory in a FreedomBox user's home directory in the filesystem. This directory is: public_htmlThus the absolute path for the directory of a user named fbx with home directory in /home/fbx will be /home/fbx/public_html. User websites will serve documents placed in this directory when requests for documents with the URI path "~fbx" are received. For the the example.org domain thus a request for the document example.org/~fbx/index.html will transfer the file in /home/fbx/public_html/index.html. Using SFTP to create public_html and upload documentsTo be writtenBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Apache_userdir62020-02-26 22:51:55JamesValleroyrephrase52020-02-26 22:50:33JamesValleroyPlinth -> FreedomBox42020-02-26 22:49:27JamesValleroysimply wording32019-02-27 00:08:57JamesValleroyremove wiki links22019-02-17 21:44:22MikkelKirkgaardNielsenrefer to ourselves as User websites, add basics table from new template12019-02-13 23:15:52MikkelKirkgaardNielsenadd draft pageUser websites (userdir)What is User websites?User websites is a module of the Apache webserver enabled to allow users defined in the FreedomBox system to expose a set of static files on the FreedomBox filesystem as a website to the local network and/or the internet according to the network and firewall setup. Application basicsCategory File sharing Available since version 0.9.4Upstream project website Upstream end user documentation ScreenshotAdd when/if an interface is made for FreedomBoxUsing User websitesThe module is always enabled and offers no configuration from the FreedomBox web interface. There is no configuration or status page shown for this module in the FreedomBox web interface. To serve documents, place the files in the designated directory in a FreedomBox user's home directory in the filesystem. This directory is: public_htmlThus the absolute path for the directory of a user named fbx with home directory in /home/fbx will be /home/fbx/public_html. User websites will serve documents placed in this directory when requests for documents with the URI path "~fbx" are received. For the the example.org domain thus a request for the document example.org/~fbx/index.html will transfer the file in /home/fbx/public_html/index.html. Using SFTP to create public_html and upload documentsTo be writtenBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Backups.raw.xml b/doc/manual/en/Backups.raw.xml
index 14c743d2d..b308df17a 100644
--- a/doc/manual/en/Backups.raw.xml
+++ b/doc/manual/en/Backups.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Backups312019-11-11 17:07:05JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service302019-02-26 23:33:42SunilMohanAdapaUpdate information about tt-rss292019-02-23 00:11:05JamesValleroyadd mldonkey282019-02-04 01:16:41SunilMohanAdapaAdd FreedomBox footer272019-01-31 01:30:48SunilMohanAdapaMinor formatting262019-01-31 01:29:18SunilMohanAdapaMake manual friendly, consolidate feature data, update description252019-01-30 17:45:57SunilMohanAdapaMinor release update242019-01-23 00:43:21SunilMohanAdapaUpdate information about syncthing232019-01-18 22:26:06SunilMohanAdapaUpdate OpenVPN information222018-10-30 05:04:32SunilMohanAdapaUpdate information about Tahoe-LAFS212018-10-29 23:50:51SunilMohanAdapaUpdate information about users and letsencrypt202018-10-26 05:36:32SunilMohanAdapaUpdate information about Monkeysphere192018-10-23 23:30:58SunilMohanAdapaUpdate information about upgrades182018-10-23 22:21:23SunilMohanAdapaAdd information about Tor172018-10-22 17:17:31SunilMohanAdapaUpdate information about newly merged changes162018-10-19 17:12:53SunilMohanAdapaAdd information about SSH152018-10-19 15:38:54SunilMohanAdapaUpdate information on recent progress142018-10-15 23:09:09SunilMohanAdapaUpdate status of datetime and deluge132018-10-09 03:22:17SunilMohanAdapaUpdate information about release of version 0.40122018-10-04 11:34:24JamesValleroyremove links to "FreedomBox" page112018-10-04 04:47:13SunilMohanAdapaMinor formatting102018-10-04 04:46:50SunilMohanAdapaUpdate list of supported applications92018-10-02 15:43:29DannyHaidar82018-10-02 15:41:49DannyHaidar72018-10-02 15:38:00DannyHaidar62018-10-01 17:38:55DannyHaidar52018-10-01 16:50:33DannyHaidar42018-10-01 16:49:00DannyHaidar32018-10-01 16:39:47DannyHaidar22018-10-01 16:37:48DannyHaidar12018-10-01 16:36:42DannyHaidarBackupsFreedomBox includes the ability to backup and restore data, preferences, configuration and secrets from most of the applications. The Backups feature is built using Borg backup software. Borg is a deduplicating and compressing backup program. It is designed for efficient and secure backups. This backups feature can be used to selectively backup and restore data on an app-by-app basis. Backed up data can be stored on the FreedomBox machine itself or on a remote server. Any remote server providing SSH access can be used as a backup storage repository for FreedomBox backups. Data stored remotely may be encrypted and in such cases remote server cannot access your decrypted data. Status of Backups FeatureApp/FeatureSupport in VersionNotes Avahi - no backup needed Backups - no backup needed Bind 0.41 Cockpit - no backup needed Coquelicot 0.40 includes uploaded files Datetime 0.41 Deluge 0.41 does not include downloaded/seeding files Diagnostics - no backup needed Dynamic DNS 0.39 ejabberd 0.39 includes all data and configuration Firewall - no backup needed ikiwiki 0.39 includes all wikis/blogs and their content infinoted 0.39 includes all data and keys JSXC - no backup needed Let's Encrypt 0.42 Matrix Synapse 0.39 includes media and uploads MediaWiki 0.39 includes wiki pages and uploaded files Minetest 0.39 MLDonkey 19.0 Monkeysphere 0.42 Mumble 0.40 Names - no backup needed Networks No No plans currently to implement backup OpenVPN 0.48 includes all user and server keys Pagekite 0.40 Power - no backup needed Privoxy - no backup needed Quassel 0.40 includes users and logs Radicale 0.39 includes calendar and cards data for all users repro 0.39 includes all users, data and keys Roundcube - no backup needed SearX - no backup needed Secure Shell (SSH) Server 0.41 includes host keys Security 0.41 Shadowsocks 0.40 only secrets Sharing 0.40 does not include the data in the shared folders Snapshot 0.41 only configuration, does not include snapshot data Storage - no backup needed Syncthing 0.48 does not include data in the shared folders Tahoe-LAFS 0.42 includes all data and configuration Tiny Tiny RSS 19.2 includes database containing feeds, stories, etc. Tor 0.42 includes configuration and secrets such as onion service keys Transmission 0.40 does not include downloaded/seeding files Upgrades 0.42 Users No No plans currently to implement backup How to install and use BackupsStep 1Backups: Step 1Step 2Backups: Step 2Step 3Backups: Step 3Step 4Backups: Step 4Step 5Backups: Step 5Step 6Backups: Step 6Step 7Backups: Step 7Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Backups312019-11-11 17:07:05JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service302019-02-26 23:33:42SunilMohanAdapaUpdate information about tt-rss292019-02-23 00:11:05JamesValleroyadd mldonkey282019-02-04 01:16:41SunilMohanAdapaAdd FreedomBox footer272019-01-31 01:30:48SunilMohanAdapaMinor formatting262019-01-31 01:29:18SunilMohanAdapaMake manual friendly, consolidate feature data, update description252019-01-30 17:45:57SunilMohanAdapaMinor release update242019-01-23 00:43:21SunilMohanAdapaUpdate information about syncthing232019-01-18 22:26:06SunilMohanAdapaUpdate OpenVPN information222018-10-30 05:04:32SunilMohanAdapaUpdate information about Tahoe-LAFS212018-10-29 23:50:51SunilMohanAdapaUpdate information about users and letsencrypt202018-10-26 05:36:32SunilMohanAdapaUpdate information about Monkeysphere192018-10-23 23:30:58SunilMohanAdapaUpdate information about upgrades182018-10-23 22:21:23SunilMohanAdapaAdd information about Tor172018-10-22 17:17:31SunilMohanAdapaUpdate information about newly merged changes162018-10-19 17:12:53SunilMohanAdapaAdd information about SSH152018-10-19 15:38:54SunilMohanAdapaUpdate information on recent progress142018-10-15 23:09:09SunilMohanAdapaUpdate status of datetime and deluge132018-10-09 03:22:17SunilMohanAdapaUpdate information about release of version 0.40122018-10-04 11:34:24JamesValleroyremove links to "FreedomBox" page112018-10-04 04:47:13SunilMohanAdapaMinor formatting102018-10-04 04:46:50SunilMohanAdapaUpdate list of supported applications92018-10-02 15:43:29DannyHaidar82018-10-02 15:41:49DannyHaidar72018-10-02 15:38:00DannyHaidar62018-10-01 17:38:55DannyHaidar52018-10-01 16:50:33DannyHaidar42018-10-01 16:49:00DannyHaidar32018-10-01 16:39:47DannyHaidar22018-10-01 16:37:48DannyHaidar12018-10-01 16:36:42DannyHaidarBackupsFreedomBox includes the ability to backup and restore data, preferences, configuration and secrets from most of the applications. The Backups feature is built using Borg backup software. Borg is a deduplicating and compressing backup program. It is designed for efficient and secure backups. This backups feature can be used to selectively backup and restore data on an app-by-app basis. Backed up data can be stored on the FreedomBox machine itself or on a remote server. Any remote server providing SSH access can be used as a backup storage repository for FreedomBox backups. Data stored remotely may be encrypted and in such cases remote server cannot access your decrypted data. Status of Backups FeatureApp/FeatureSupport in VersionNotes Avahi - no backup needed Backups - no backup needed Bind 0.41 Cockpit - no backup needed Coquelicot 0.40 includes uploaded files Datetime 0.41 Deluge 0.41 does not include downloaded/seeding files Diagnostics - no backup needed Dynamic DNS 0.39 ejabberd 0.39 includes all data and configuration Firewall - no backup needed ikiwiki 0.39 includes all wikis/blogs and their content infinoted 0.39 includes all data and keys JSXC - no backup needed Let's Encrypt 0.42 Matrix Synapse 0.39 includes media and uploads MediaWiki 0.39 includes wiki pages and uploaded files Minetest 0.39 MLDonkey 19.0 Monkeysphere 0.42 Mumble 0.40 Names - no backup needed Networks No No plans currently to implement backup OpenVPN 0.48 includes all user and server keys Pagekite 0.40 Power - no backup needed Privoxy - no backup needed Quassel 0.40 includes users and logs Radicale 0.39 includes calendar and cards data for all users repro 0.39 includes all users, data and keys Roundcube - no backup needed SearX - no backup needed Secure Shell (SSH) Server 0.41 includes host keys Security 0.41 Shadowsocks 0.40 only secrets Sharing 0.40 does not include the data in the shared folders Snapshot 0.41 only configuration, does not include snapshot data Storage - no backup needed Syncthing 0.48 does not include data in the shared folders Tahoe-LAFS 0.42 includes all data and configuration Tiny Tiny RSS 19.2 includes database containing feeds, stories, etc. Tor 0.42 includes configuration and secrets such as onion service keys Transmission 0.40 does not include downloaded/seeding files Upgrades 0.42 Users No No plans currently to implement backup How to install and use BackupsStep 1Backups: Step 1Step 2Backups: Step 2Step 3Backups: Step 3Step 4Backups: Step 4Step 5Backups: Step 5Step 6Backups: Step 6Step 7Backups: Step 7Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Cockpit.raw.xml b/doc/manual/en/Cockpit.raw.xml
index a37116b61..e5a9d5570 100644
--- a/doc/manual/en/Cockpit.raw.xml
+++ b/doc/manual/en/Cockpit.raw.xml
@@ -1,3 +1,3 @@
FreedomBox/Manual/Cockpit62019-11-14 18:04:05fioddorwiki link to wiki page52019-11-11 16:57:11JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service42019-08-20 18:22:51SunilMohanAdapaUpdate information about .local domain and fix URLs32019-07-19 00:08:47SunilMohanAdapaAdd informatio about Cockpit needing a proper domain name22019-01-10 21:41:56SunilMohanAdapaWrite manual page for Cockpit12018-03-02 12:57:48JosephNuthalapatiCreate stub for CockpitCockpit (Server Administration)Cockpit is a server manager that makes it easy to administer GNU/Linux servers via a web browser. On a FreedomBox, controls are available for many advanced functions that are not usually required. A web based terminal for console operations is also available. It can be accessed by any user on your FreedomBox belonging to the admin group. Cockpit is only usable when you have proper domain name setup for your FreedomBox and you use that domain name to access Cockpit. See the Troubleshooting section for more information. Use cockpit only if you are an administrator of GNU/Linux systems with advanced skills. FreedomBox tries to coexist with changes to system by system administrators and system administration tools like Cockpit. However, improper changes to the system might causes failures in FreedomBox functions. Using CockpitInstall Cockpit like any other application on FreedomBox. Make sure that Cockpit is enabled after that. cockpit-enable.pngEnsure that the user account on FreedomBox that will used for Cockpit is part of the administrators group. cockpit-admin-user.pngLaunch the Cockpit web interface. Login using the configured user account. cockpit-login.pngStart using cockpit. cockpit-system.pngCockpit is usable on mobile interfaces too. cockpit-mobile.pngFeaturesThe following features of Cockpit may be useful for advanced FreedomBox users. System DashboardCockpit has a system dashboard that Shows detailed hardware information Shows basic performance metrics of a system Allows changing system time and timezone Allows changing hostname. Please use FreedomBox UI to do this Shows SSH server fingerprints cockpit-system.pngViewing System LogsCockpit allows querying system logs and examining them in full detail. cockpit-logs.pngManaging StorageCockpit allows following advanced storage functions: View full disk information Editing disk partitions RAID management cockpit-storage1.pngcockpit-storage2.pngNetworkingCockpit and FreedomBox both rely on NetworkManager to configure the network. However, Cockpit offers some advanced configuration not available on FreedomBox: Route configuration Configure Bonds, Bridges, VLANs cockpit-network1.pngcockpit-network2.pngcockpit-network3.pngServicesCockpit allows management of services and periodic jobs (similar to cron). cockpit-services1.pngcockpit-services2.pngWeb TerminalCockpit offers a web based terminal that can be used perform manual system administration tasks. cockpit-terminal.pngTroubleshootingCockpit requires a domain name to be properly setup on your FreedomBox and will only work when you access it using a URL with that domain name. Cockpit will not work when using IP address in the URL. Using freedombox.local as the domain name also does not work. For example, the following URLs will not work: Starting with FreedomBox version 19.15, using .local domain works. You can access Cockpit using the URL . The .local domain is based on your hostname. If your hostname is mybox, your .local domain name will be mybox.local and the Cockpit URL will be . To properly access Cockpit, use the domain name configured for your FreedomBox.Cockpit will also work well when using a Tor Onion Service. The following URLs will work: The reason for this behaviour is that Cockpit uses WebSockets to connect to the backend server. Cross site requests for WebSockets must be prevented for security reasons. To implement this, Cockpit maintains a list of all domains from which requests are allowed. FreedomBox automatically configures this list whenever you add or remove a domain. However, since we can't rely on IP addresses, they are not added by FreedomBox to this domain list. You can see the current list of allowed domains, as managed by FreedomBox, in /etc/cockpit/cockpit.conf. You may edit this, but do so only if you understand web security consequences of this. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+https://exampletorhs.onion/_cockpit/]]>The reason for this behaviour is that Cockpit uses WebSockets to connect to the backend server. Cross site requests for WebSockets must be prevented for security reasons. To implement this, Cockpit maintains a list of all domains from which requests are allowed. FreedomBox automatically configures this list whenever you add or remove a domain. However, since we can't rely on IP addresses, they are not added by FreedomBox to this domain list. You can see the current list of allowed domains, as managed by FreedomBox, in /etc/cockpit/cockpit.conf. You may edit this, but do so only if you understand web security consequences of this. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Configure.raw.xml b/doc/manual/en/Configure.raw.xml
index e77d0d920..0dc6b2282 100644
--- a/doc/manual/en/Configure.raw.xml
+++ b/doc/manual/en/Configure.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Configure92019-02-28 10:25:01JosephNuthalapatiRename default app to webserver home page82018-10-09 09:54:01JosephNuthalapatiImprove formatting72018-07-25 08:38:53JosephNuthalapatiRemove /home as an alias to /freedombox62018-07-24 17:51:28SunilMohanAdapaRename FreedomBox Plinth to FreedomBox Service (Plinth)52018-07-24 16:12:49JosephNuthalapatiAdd tip about bookmarking FreedomBox Plinth42018-07-24 13:52:47JosephNuthalapatiAdd wiki entry about Default App32016-12-31 04:11:43JamesValleroymention how domain name is used22016-12-31 04:07:26JamesValleroyfix outline12016-08-21 16:35:55DrahtseilCreated ConfigureConfigureConfigure has some general configuration options: HostnameHostname is the local name by which other devices on the local network can reach your FreedomBox. The default hostname is freedombox. Domain NameDomain name is the global name by which other devices on the Internet can reach your FreedomBox. The value set here is used by the Chat Server (XMPP), Matrix Synapse, Certificates (Let's Encrypt), and Monkeysphere. Webserver Home PageThis is an advanced option that allows you to set something other than FreedomBox Service (Plinth) as the home page to be served on the domain name of the FreedomBox. For example, if your FreedomBox's domain name is and you set MediaWiki as the home page, visiting will take you to instead of the usual . You can set any web application, Ikiwiki wikis and blogs or Apache's default index.html page as the web server home page. Once some other app is set as the home page, you can only navigate to the FreedomBox Service (Plinth) by typing into the browser. /freedombox can also be used as an alias to /plinthTip: Bookmark the URL of FreedomBox Service (Plinth) before setting the home page to some other app. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Configure92019-02-28 10:25:01JosephNuthalapatiRename default app to webserver home page82018-10-09 09:54:01JosephNuthalapatiImprove formatting72018-07-25 08:38:53JosephNuthalapatiRemove /home as an alias to /freedombox62018-07-24 17:51:28SunilMohanAdapaRename FreedomBox Plinth to FreedomBox Service (Plinth)52018-07-24 16:12:49JosephNuthalapatiAdd tip about bookmarking FreedomBox Plinth42018-07-24 13:52:47JosephNuthalapatiAdd wiki entry about Default App32016-12-31 04:11:43JamesValleroymention how domain name is used22016-12-31 04:07:26JamesValleroyfix outline12016-08-21 16:35:55DrahtseilCreated ConfigureConfigureConfigure has some general configuration options: HostnameHostname is the local name by which other devices on the local network can reach your FreedomBox. The default hostname is freedombox. Domain NameDomain name is the global name by which other devices on the Internet can reach your FreedomBox. The value set here is used by the Chat Server (XMPP), Matrix Synapse, Certificates (Let's Encrypt), and Monkeysphere. Webserver Home PageThis is an advanced option that allows you to set something other than FreedomBox Service (Plinth) as the home page to be served on the domain name of the FreedomBox. For example, if your FreedomBox's domain name is and you set MediaWiki as the home page, visiting will take you to instead of the usual . You can set any web application, Ikiwiki wikis and blogs or Apache's default index.html page as the web server home page. Once some other app is set as the home page, you can only navigate to the FreedomBox Service (Plinth) by typing into the browser. /freedombox can also be used as an alias to /plinthTip: Bookmark the URL of FreedomBox Service (Plinth) before setting the home page to some other app. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Coquelicot.raw.xml b/doc/manual/en/Coquelicot.raw.xml
index 0851bf7db..a0f08b4f8 100644
--- a/doc/manual/en/Coquelicot.raw.xml
+++ b/doc/manual/en/Coquelicot.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Coquelicot82020-04-12 16:01:36JamesValleroyadd links back to top level pages72019-09-11 09:45:09fioddorCategory Deduplicated62018-12-30 19:59:56DrahtseilBasic priniciple52018-03-05 09:15:01JosephNuthalapaticoquelicot: Fix broken links42018-02-26 17:14:51JamesValleroyincluded in 0.2432018-02-12 23:48:10JamesValleroybump version22018-02-12 23:47:14JamesValleroyreplace fancy quote characters with plain quote characters12018-02-10 03:14:55JosephNuthalapatiCreate new page for CoquelicotFile Sharing (Coquelicot)About CoquelicotCoquelicot is a "one-click" file sharing web application with a focus on protecting users' privacy. The basic principle is simple: users can upload a file to the server, in return they get a unique URL which can be shared with others in order to download the file. A download password can be defined. After the upload you get a unique link that can be shared to your partners in order to Read more about Coquelicot at the Coquelicot READMEAvailable since: version 0.24.0 When to use CoquelicotCoquelicot is best used to quickly share a single file. If you want to share a folder, for a single use, compress the folder and share it over Coquelicot which must be kept synchronized between computers, use Syncthing instead Coquelicot can only provide a reasonable degree of privacy. If anonymity is required, you should consider using the desktop application Onionshare instead. Since Coquelicot fully uploads the file to the server, your FreedomBox will incur both upload and download bandwidth costs. For very large files, consider sharing them using BitTorrent by creating a private torrent file. If anonymity is required, use Onionshare. It is P2P and doesn't require a server. Coquelicot on FreedomBoxWith Coquelicot installed, you can upload files to your FreedomBox server and privately share them. Post installation, the Coquelicot page offers two settings. Upload Password: Coquelicot on FreedomBox is currently configured to use simple password authentication for ease of use. Remember that it's one global password for this Coquelicot instance and not your user password for FreedomBox. You need not remember this password. You can set a new one from the Plinth interface anytime. Maximum File Size: You can alter the maximum size of the file that can be transferred through Coquelicot using this setting. The size is in Mebibytes. The maximum file size is only limited by the disk size of your FreedomBox. PrivacySomeone monitoring your network traffic might find out that some file is being transferred through your FreedomBox and also possibly its size, but will not know the file name. Coquelicot encrypts files on the server and also fills the file contents with 0s when deleting them. This eliminates the risk of file contents being revealed in the event of your FreedomBox being confiscated or stolen. The real risk to mitigate here is a third-party also downloading your file along with the intended recipient. Sharing over instant messengersSome instant messengers which have previews for websites might download your file in order to show a preview in the conversation. If you set the option of one-time download on a file, you might notice that the one download will be used up by the instant messenger. If sharing over such messengers, please use a download password in combination with a one-time download option. Sharing download links privatelyIt is recommended to share your file download links and download passwords over encrypted channels. You can simply avoid all the above problems with instant messenger previews by using instant messengers that support encrypted conversations like Riot with Matrix Synapse or XMPP (ejabberd server on FreedomBox) with clients that support end-to-end encryption. Send the download link and the download password in two separate messages (helps if your messenger supports perfect forward secrecy like XMPP with OTR). You can also share your links over PGP-encrypted email using Thunderbird. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Coquelicot82020-04-12 16:01:36JamesValleroyadd links back to top level pages72019-09-11 09:45:09fioddorCategory Deduplicated62018-12-30 19:59:56DrahtseilBasic priniciple52018-03-05 09:15:01JosephNuthalapaticoquelicot: Fix broken links42018-02-26 17:14:51JamesValleroyincluded in 0.2432018-02-12 23:48:10JamesValleroybump version22018-02-12 23:47:14JamesValleroyreplace fancy quote characters with plain quote characters12018-02-10 03:14:55JosephNuthalapatiCreate new page for CoquelicotFile Sharing (Coquelicot)About CoquelicotCoquelicot is a "one-click" file sharing web application with a focus on protecting users' privacy. The basic principle is simple: users can upload a file to the server, in return they get a unique URL which can be shared with others in order to download the file. A download password can be defined. After the upload you get a unique link that can be shared to your partners in order to Read more about Coquelicot at the Coquelicot READMEAvailable since: version 0.24.0 When to use CoquelicotCoquelicot is best used to quickly share a single file. If you want to share a folder, for a single use, compress the folder and share it over Coquelicot which must be kept synchronized between computers, use Syncthing instead Coquelicot can only provide a reasonable degree of privacy. If anonymity is required, you should consider using the desktop application Onionshare instead. Since Coquelicot fully uploads the file to the server, your FreedomBox will incur both upload and download bandwidth costs. For very large files, consider sharing them using BitTorrent by creating a private torrent file. If anonymity is required, use Onionshare. It is P2P and doesn't require a server. Coquelicot on FreedomBoxWith Coquelicot installed, you can upload files to your FreedomBox server and privately share them. Post installation, the Coquelicot page offers two settings. Upload Password: Coquelicot on FreedomBox is currently configured to use simple password authentication for ease of use. Remember that it's one global password for this Coquelicot instance and not your user password for FreedomBox. You need not remember this password. You can set a new one from the Plinth interface anytime. Maximum File Size: You can alter the maximum size of the file that can be transferred through Coquelicot using this setting. The size is in Mebibytes. The maximum file size is only limited by the disk size of your FreedomBox. PrivacySomeone monitoring your network traffic might find out that some file is being transferred through your FreedomBox and also possibly its size, but will not know the file name. Coquelicot encrypts files on the server and also fills the file contents with 0s when deleting them. This eliminates the risk of file contents being revealed in the event of your FreedomBox being confiscated or stolen. The real risk to mitigate here is a third-party also downloading your file along with the intended recipient. Sharing over instant messengersSome instant messengers which have previews for websites might download your file in order to show a preview in the conversation. If you set the option of one-time download on a file, you might notice that the one download will be used up by the instant messenger. If sharing over such messengers, please use a download password in combination with a one-time download option. Sharing download links privatelyIt is recommended to share your file download links and download passwords over encrypted channels. You can simply avoid all the above problems with instant messenger previews by using instant messengers that support encrypted conversations like Riot with Matrix Synapse or XMPP (ejabberd server on FreedomBox) with clients that support end-to-end encryption. Send the download link and the download password in two separate messages (helps if your messenger supports perfect forward secrecy like XMPP with OTR). You can also share your links over PGP-encrypted email using Thunderbird. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Coturn.raw.xml b/doc/manual/en/Coturn.raw.xml
new file mode 100644
index 000000000..bbdd59ade
--- /dev/null
+++ b/doc/manual/en/Coturn.raw.xml
@@ -0,0 +1,4 @@
+FreedomBox/Manual/Coturn82020-05-18 23:24:50JamesValleroyremove duplicate word "server"72020-05-18 23:23:07JamesValleroyspelling "known"62020-05-18 23:22:26JamesValleroyadd common acronym (NAT)52020-05-18 23:21:45JamesValleroyspelling42020-05-10 10:33:22fioddorStress the benefits of direct streaming.32020-05-08 19:15:06Drahtseiltiny typo in synapes corrected22020-05-06 06:04:11SunilMohanAdapaUpdate title, include footer12020-05-06 05:59:44SunilMohanAdapaAdd manual page for new app CoturnVoIP Helper (Coturn)Coturn is a server to facilitate audio/video calls and conferences by providing an implementation of TURN and STUN protocols. WebRTC, SIP and other communication servers can use it to establish a call between parties who are otherwise unable connect to each other. It is not meant to be used directly by users. Servers such as Matrix Synapse need to be configured with the details provided on the Coturn app page. Apart from Matrix Synapse, Jitsi, Ejabberd, Nextcloud Talk, etc. can use Coturn server for audio/video calls and conferences. There is no need for the servers to be running on the same machine as FreedomBox and external servers can use Coturn running on FreedomBox. Coturn is available in FreedomBox since version 20.8 as an advanced app. This means that you need to check "Show advanced apps and features" in "General Configuration" to see Coturn icon in the "Apps" section. How it worksWhen making an audio/video call, it is best to route the media streams between two peers directly. This will give the best possible latency (better signal quality) and avoid depending on a centralized server (privacy). It scales well because a simple chat server can host thousands of calls without involving the server in any way other than to setup the call. However, this approach does not work most of the time to due to how networks are configured. Most peers on the network do not have a unique IP address allocated to them. They work hidden behind a network device that performs "Network Address Translation" (NAT) for them. This means that the two peers have no way of reaching each other. To address this problem, a simple technique known as STUN was introduced. With the help of a third party STUN server, the peers can trick the NAT devices, to carry the traffic between the two peers. Unfortunately, this trick only works about 80% of the time. So, if STUN fails, peers have no choice but to route their traffic through an intermediary server called TURN server. All the mechanism of trying out STUN first and then falling back to TURN is described in a protocol known as ICE. On FreedomBox, Coturn provides both STUN and TURN servers. Both services are provided over TCP as well as UDP. They are provided on unencrypted as well as encrypted channels (with have a higher chance of success). Since STUN servers are very inexpensive and don't consume a lot of server resources, there is no authentication needed to use them. TURN servers on the other hand need authentication. This authentication is highly simplified and does not require maintaining a database of users. A server such as matrix-synapse which is about to setup an audio/video call between two peers will generate a username and password using a shared secret. When the peers use the TURN server, they will be validated using these credentials because the TURN server also knows the same secret. In summary, a communication server needs to know the URLs of the STUN/TURN servers along with a shared authentication secret for TURN. After that, during audio/video call setup, they will correctly guide the peers to use STUN/TURN servers. Coturn app in FreedomBox provides exactly this information. This information can be used to configure a communication server irrespective of whether it is running on the same FreedomBox or on another server. Configuring Matrix SynapseMatrix Synapse server in FreedomBox can be configured to use Coturn TURN/STUN server. In future, when you install Matrix Synapse, FreedomBox will automatically install Coturn and configure its parameters into Matrix Synapse. To configure Matrix Synapse, edit the file /etc/matrix-synapse/homeserver.yaml with the following lines: And then restart matrix-synapse server by disabling and re-enabling the matrix-synapse app. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/DateTime.raw.xml b/doc/manual/en/DateTime.raw.xml
index f6016bb7d..a7f3cad8f 100644
--- a/doc/manual/en/DateTime.raw.xml
+++ b/doc/manual/en/DateTime.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/DateTime32020-03-30 00:08:09JamesValleroytoo many #s in front of END_INCLUDE22017-03-31 20:20:57DrahtseilScreenshot DateTime12016-08-21 09:26:45DrahtseilCreated Date & TimeDate & TimeThis network time server is a program that maintains the system time in synchronization with servers on the Internet. You can select your time zone by picking a big city nearby (they are sorted by Continent/City) or select directly the zone with respect to GMT (Greenwich Mean Time). DateTime.pngBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/DateTime32020-03-30 00:08:09JamesValleroytoo many #s in front of END_INCLUDE22017-03-31 20:20:57DrahtseilScreenshot DateTime12016-08-21 09:26:45DrahtseilCreated Date & TimeDate & TimeThis network time server is a program that maintains the system time in synchronization with servers on the Internet. You can select your time zone by picking a big city nearby (they are sorted by Continent/City) or select directly the zone with respect to GMT (Greenwich Mean Time). DateTime.pngBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Deluge.raw.xml b/doc/manual/en/Deluge.raw.xml
index 2e6453419..ca1c70f80 100644
--- a/doc/manual/en/Deluge.raw.xml
+++ b/doc/manual/en/Deluge.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Deluge112016-12-31 01:32:15JamesValleroyadd initial setup directions102016-12-30 19:20:00JamesValleroyreword92016-12-30 19:14:16JamesValleroyadd intro paragraph82016-12-30 19:00:50JamesValleroyno space in "BitTorrent"72016-12-26 18:07:46JamesValleroyadd screenshot62016-09-01 19:05:24Drahtseiladapted title to Plinth wording52016-04-10 07:26:48PhilippeBaretAdded bottom navigation link42015-12-15 20:41:02PhilippeBaretCorrection32015-12-15 20:40:16PhilippeBaretCorrection22015-12-15 18:16:28PhilippeBaretAdded Deluge definition12015-12-15 16:59:01PhilippeBaretCreated new Deluge page for manualBitTorrent (Deluge)What is Deluge?BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two BitTorrent web clients available in FreedomBox: Transmission and Deluge. They have similar features, but you may prefer one over the other. Deluge is a lightweight BitTorrent client that is highly configurable. Additional functionality can be added by installing plugins. ScreenshotDeluge Web UIInitial SetupAfter installing Deluge, it can be accessed by pointing your browser to https://<your freedombox>/deluge. You will need to enter a password to login: Deluge LoginThe initial password is "deluge". The first time that you login, Deluge will ask if you wish to change the password. You should change it to something that is harder to guess. Next you will be shown the connection manager. Click on the first entry (Offline - 127.0.0.1:58846). Then click "Start Daemon" to start the Deluge service that will run in the background. Deluge Connection Manager (Offline)Now it should say "Online". Click "Connect" to complete the setup. Deluge Connection Manager (Online)At this point, you are ready to begin using Deluge. You can make further changes in the Preferences, or add a torrent file or URL. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Deluge112016-12-31 01:32:15JamesValleroyadd initial setup directions102016-12-30 19:20:00JamesValleroyreword92016-12-30 19:14:16JamesValleroyadd intro paragraph82016-12-30 19:00:50JamesValleroyno space in "BitTorrent"72016-12-26 18:07:46JamesValleroyadd screenshot62016-09-01 19:05:24Drahtseiladapted title to Plinth wording52016-04-10 07:26:48PhilippeBaretAdded bottom navigation link42015-12-15 20:41:02PhilippeBaretCorrection32015-12-15 20:40:16PhilippeBaretCorrection22015-12-15 18:16:28PhilippeBaretAdded Deluge definition12015-12-15 16:59:01PhilippeBaretCreated new Deluge page for manualBitTorrent (Deluge)What is Deluge?BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two BitTorrent web clients available in FreedomBox: Transmission and Deluge. They have similar features, but you may prefer one over the other. Deluge is a lightweight BitTorrent client that is highly configurable. Additional functionality can be added by installing plugins. ScreenshotDeluge Web UIInitial SetupAfter installing Deluge, it can be accessed by pointing your browser to https://<your freedombox>/deluge. You will need to enter a password to login: Deluge LoginThe initial password is "deluge". The first time that you login, Deluge will ask if you wish to change the password. You should change it to something that is harder to guess. Next you will be shown the connection manager. Click on the first entry (Offline - 127.0.0.1:58846). Then click "Start Daemon" to start the Deluge service that will run in the background. Deluge Connection Manager (Offline)Now it should say "Online". Click "Connect" to complete the setup. Deluge Connection Manager (Online)At this point, you are ready to begin using Deluge. You can make further changes in the Preferences, or add a torrent file or URL. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Diagnostics.raw.xml b/doc/manual/en/Diagnostics.raw.xml
index c007f3c0e..705c9a44d 100644
--- a/doc/manual/en/Diagnostics.raw.xml
+++ b/doc/manual/en/Diagnostics.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Diagnostics12016-08-21 09:43:52DrahtseilCreated DiagnosticsDiagnosticsThe system diagnostic test will run a number of checks on your system to confirm that applications and services are working as expected. Just click Run Diagnostics. This may take some minutes. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Diagnostics12016-08-21 09:43:52DrahtseilCreated DiagnosticsDiagnosticsThe system diagnostic test will run a number of checks on your system to confirm that applications and services are working as expected. Just click Run Diagnostics. This may take some minutes. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/DynamicDNS.raw.xml b/doc/manual/en/DynamicDNS.raw.xml
index a6615d562..2b81854c6 100644
--- a/doc/manual/en/DynamicDNS.raw.xml
+++ b/doc/manual/en/DynamicDNS.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/DynamicDNS162019-07-31 13:18:03NikolasNybyfix typo152019-02-26 03:20:16JamesValleroyspelling142018-03-11 03:11:04JosephNuthalapatiFix oversized image132017-03-31 20:35:42Drahtseilupdated screenshot122016-09-09 15:40:08SunilMohanAdapaMinor indentation fix with screenshot112016-09-01 19:18:48Drahtseiladapted title to Plinth wording102016-08-15 18:46:51DrahtseilScreenshot GNU-DIP92016-04-14 14:22:41PhilippeBaretAdded accurate How to create a DNS name with GnuDIP82016-04-10 07:15:47PhilippeBaretAdded bottom navigation link72016-01-11 06:28:36PhilippeBaretCorrection62015-12-15 18:48:25PhilippeBaretAdded definition title to Dynamic DNS page52015-09-13 15:02:37SunilMohanAdapaDemote headings one level for inclusion into manual42015-09-13 13:14:41SunilMohanAdapaMove DynamicDNS page to manual32015-08-13 13:03:13SunilMohanAdapaAdd more introduction and re-organize.22015-08-09 21:38:52DanielSteglich12015-08-09 21:23:48DanielSteglichDynamic DNS ClientWhat is Dynamic DNS?In order to reach a server on the Internet, the server needs to have permanent address also known as the static IP address. Many Internet service providers don't provide home users with a static IP address or they charge more providing a static IP address. Instead they provide the home user with an IP address that changes every time the user connects to the Internet. Clients wishing to contact the server will have difficulty reaching the server. Dynamic DNS service providers assist in working around a problem. First they provide you with a domain name, such as 'myhost.example.org'. Then they associate your IP address, whenever it changes, with this domain name. Then anyone intending to reach the server will be to contact the server using the domain name 'myhost.example.org' which always points to the latest IP address of the server. For this to work, every time you connect to the Internet, you will have to tell your Dynamic DNS provider what your current IP address is. Hence you need special software on your server to perform this operation. The Dynamic DNS function in FreedomBox will allow users without a static public IP address to push the current public IP address to a Dynamic DNS Server. This allows you to expose services on FreedomBox, such as ownCloud, to the Internet. GnuDIP vs. Update URLThere are two main mechanism to notify the Dynamic DNS server of your new IP address; using the GnuDIP protocol and using the Update URL mechanism. If a service provided using update URL is not properly secured using HTTPS, your credentials may be visible to an adversary. Once an adversary gains your credentials, they will be able to replay your request your server and hijack your domain. On the other hand, the GnuDIP protocol will only transport a salted MD5 value of your password, in a way that is secure against replay attacks. Using the GnuDIP protocolRegister an account with any Dynamic DNS service provider. A free service provided by the FreedomBox community is available at . In FreedomBox UI, enable the Dynamic DNS Service. Select GnuDIP as Service type, enter your Dynamic DNS service provider address (for example, gnudip.datasystems24.net) into GnuDIP Server Address field. Dynamic DNS SettingsFill Domain Name, Username, Password information given by your provider into the corresponding fields. Using an Update URLThis feature is implemented because the most popular Dynamic DNS providers are using Update URLs mechanism. Register an account with a Dynamic DNS service provider providing their service using Update URL mechanism. Some example providers are listed in the configuration page itself. In FreedomBox UI, enable the Dynamic DNS service. Select other Update URL as Service type, enter the update URL given by your provider into Update URL field. If you browse the update URL with your Internet browser and a warning message about untrusted certificate appears, then enable accept all SSL certificates. WARNING: your credentials may be readable here because man-in-the-middle attacks are possible! Consider choosing a better service provider instead. If you browse the update URL with your Internet browser and the username/password box appears, enable use HTTP basic authentication checkbox and provide the Username and Password. If the update URL contains your current IP address, replace the IP address with the string <Ip>. Checking If It WorksMake sure that external services you have enabled such as /jwchat, /roundcube and /ikiwiki are available on your domain address. Go to the Status page, make sure that the NAT type is detected correctly. If your FreedomBox is behind a NAT device, this should be detected over there (Text: Behind NAT). If your FreedomBox has a public IP address assigned, the text should be "Direct connection to the Internet". Check that the last update status is not failed. Recap: How to create a DNS name with GnuDIPto delete or to replace the old textAccess to GnuIP login page (answer Yes to all pop ups) Click on "Self Register" Fill the registration form (Username and domain will form the public IP address [username.domain]) Take note of the username/hostname and password that will be used on the FreedomBox app. Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login). Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices). Leave the GnuDIP interface and open the Dynamic DNS Client app page in your FreedomBox. Click on "Set Up" in the top menu. Activate Dynamic DNS Choose GnuDIP service. Add server address (gnudip.datasystems24.net) Add your fresh domain name (username.domain, ie [username].freedombox.rocks) Add your fresh username (the one used in your new IP address) and password Add your GnuDIP password Fill the option with (try this url in your browser, you will figure out immediately) Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/DynamicDNS162019-07-31 13:18:03NikolasNybyfix typo152019-02-26 03:20:16JamesValleroyspelling142018-03-11 03:11:04JosephNuthalapatiFix oversized image132017-03-31 20:35:42Drahtseilupdated screenshot122016-09-09 15:40:08SunilMohanAdapaMinor indentation fix with screenshot112016-09-01 19:18:48Drahtseiladapted title to Plinth wording102016-08-15 18:46:51DrahtseilScreenshot GNU-DIP92016-04-14 14:22:41PhilippeBaretAdded accurate How to create a DNS name with GnuDIP82016-04-10 07:15:47PhilippeBaretAdded bottom navigation link72016-01-11 06:28:36PhilippeBaretCorrection62015-12-15 18:48:25PhilippeBaretAdded definition title to Dynamic DNS page52015-09-13 15:02:37SunilMohanAdapaDemote headings one level for inclusion into manual42015-09-13 13:14:41SunilMohanAdapaMove DynamicDNS page to manual32015-08-13 13:03:13SunilMohanAdapaAdd more introduction and re-organize.22015-08-09 21:38:52DanielSteglich12015-08-09 21:23:48DanielSteglichDynamic DNS ClientWhat is Dynamic DNS?In order to reach a server on the Internet, the server needs to have permanent address also known as the static IP address. Many Internet service providers don't provide home users with a static IP address or they charge more providing a static IP address. Instead they provide the home user with an IP address that changes every time the user connects to the Internet. Clients wishing to contact the server will have difficulty reaching the server. Dynamic DNS service providers assist in working around a problem. First they provide you with a domain name, such as 'myhost.example.org'. Then they associate your IP address, whenever it changes, with this domain name. Then anyone intending to reach the server will be to contact the server using the domain name 'myhost.example.org' which always points to the latest IP address of the server. For this to work, every time you connect to the Internet, you will have to tell your Dynamic DNS provider what your current IP address is. Hence you need special software on your server to perform this operation. The Dynamic DNS function in FreedomBox will allow users without a static public IP address to push the current public IP address to a Dynamic DNS Server. This allows you to expose services on FreedomBox, such as ownCloud, to the Internet. GnuDIP vs. Update URLThere are two main mechanism to notify the Dynamic DNS server of your new IP address; using the GnuDIP protocol and using the Update URL mechanism. If a service provided using update URL is not properly secured using HTTPS, your credentials may be visible to an adversary. Once an adversary gains your credentials, they will be able to replay your request your server and hijack your domain. On the other hand, the GnuDIP protocol will only transport a salted MD5 value of your password, in a way that is secure against replay attacks. Using the GnuDIP protocolRegister an account with any Dynamic DNS service provider. A free service provided by the FreedomBox community is available at . In FreedomBox UI, enable the Dynamic DNS Service. Select GnuDIP as Service type, enter your Dynamic DNS service provider address (for example, gnudip.datasystems24.net) into GnuDIP Server Address field. Dynamic DNS SettingsFill Domain Name, Username, Password information given by your provider into the corresponding fields. Using an Update URLThis feature is implemented because the most popular Dynamic DNS providers are using Update URLs mechanism. Register an account with a Dynamic DNS service provider providing their service using Update URL mechanism. Some example providers are listed in the configuration page itself. In FreedomBox UI, enable the Dynamic DNS service. Select other Update URL as Service type, enter the update URL given by your provider into Update URL field. If you browse the update URL with your Internet browser and a warning message about untrusted certificate appears, then enable accept all SSL certificates. WARNING: your credentials may be readable here because man-in-the-middle attacks are possible! Consider choosing a better service provider instead. If you browse the update URL with your Internet browser and the username/password box appears, enable use HTTP basic authentication checkbox and provide the Username and Password. If the update URL contains your current IP address, replace the IP address with the string <Ip>. Checking If It WorksMake sure that external services you have enabled such as /jwchat, /roundcube and /ikiwiki are available on your domain address. Go to the Status page, make sure that the NAT type is detected correctly. If your FreedomBox is behind a NAT device, this should be detected over there (Text: Behind NAT). If your FreedomBox has a public IP address assigned, the text should be "Direct connection to the Internet". Check that the last update status is not failed. Recap: How to create a DNS name with GnuDIPto delete or to replace the old textAccess to GnuIP login page (answer Yes to all pop ups) Click on "Self Register" Fill the registration form (Username and domain will form the public IP address [username.domain]) Take note of the username/hostname and password that will be used on the FreedomBox app. Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login). Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices). Leave the GnuDIP interface and open the Dynamic DNS Client app page in your FreedomBox. Click on "Set Up" in the top menu. Activate Dynamic DNS Choose GnuDIP service. Add server address (gnudip.datasystems24.net) Add your fresh domain name (username.domain, ie [username].freedombox.rocks) Add your fresh username (the one used in your new IP address) and password Add your GnuDIP password Fill the option with (try this url in your browser, you will figure out immediately) Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Firewall.raw.xml b/doc/manual/en/Firewall.raw.xml
index 07a3e1527..425b11b24 100644
--- a/doc/manual/en/Firewall.raw.xml
+++ b/doc/manual/en/Firewall.raw.xml
@@ -10,4 +10,4 @@ firewall-cmd --permanent --zone=internal --add-port=5353/udp]]> --remove-interface=]]>Example: To add an interface to a zone: --add-interface=
firewall-cmd --permanent --zone= --add-interface=]]>Example: Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+firewall-cmd --permanent --zone=internal --add-interface=eth0]]>Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/GitWeb.raw.xml b/doc/manual/en/GitWeb.raw.xml
index dd0457f70..7501971c2 100644
--- a/doc/manual/en/GitWeb.raw.xml
+++ b/doc/manual/en/GitWeb.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/GitWeb72020-01-29 06:48:44fioddorInhibit autolink and stress to avoid using admin accounts.62020-01-27 12:42:43VeikoAasa52020-01-27 09:50:21VeikoAasa42019-12-16 23:25:10JamesValleroyadd standard manual page footer32019-12-15 19:38:46DrahtseilCopied description from plinth, managing, access22019-12-14 13:44:36JosephNuthalapatiAdd section: HTTP basic auth12019-12-14 13:14:15JosephNuthalapatiCreate GitWeb page with a stub.Simple Git Hosting (GitWeb)Git is a distributed version-control system for tracking changes in source code during software development. GitWeb provides a web interface to Git repositories. You can browse history and content of source code, use search to find relevant commits and code. You can also clone repositories and upload code changes with a command-line Git client or with multiple available graphical clients. And you can share your code with people around the world. To learn more on how to use Git visit Git tutorial. Available since version: 19.19 Managing the repositoriesAfter installation of GitWeb, a new repository can be created. It can be marked as private to limit access. AccessGitWeb can be accessed after installation e.g. by the web client through HTTP basic authGitWeb on FreedomBox currently supports HTTP remotes only. To avoid having to enter the password each time you pull/push to the repository, you can edit your remote to include the credentials. Example:Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only.Note: If using this method, your password will be stored in plain text in the local repository's .git/config file. For this reason, you should create a FreedomBox user who has only access to the gitweb and never use an admin account. MirroringThough your repositories are primarily hosted on your own FreedomBox, you can configure a repository on another Git hosting system like GitLab as a mirror. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/GitWeb72020-01-29 06:48:44fioddorInhibit autolink and stress to avoid using admin accounts.62020-01-27 12:42:43VeikoAasa52020-01-27 09:50:21VeikoAasa42019-12-16 23:25:10JamesValleroyadd standard manual page footer32019-12-15 19:38:46DrahtseilCopied description from plinth, managing, access22019-12-14 13:44:36JosephNuthalapatiAdd section: HTTP basic auth12019-12-14 13:14:15JosephNuthalapatiCreate GitWeb page with a stub.Simple Git Hosting (GitWeb)Git is a distributed version-control system for tracking changes in source code during software development. GitWeb provides a web interface to Git repositories. You can browse history and content of source code, use search to find relevant commits and code. You can also clone repositories and upload code changes with a command-line Git client or with multiple available graphical clients. And you can share your code with people around the world. To learn more on how to use Git visit Git tutorial. Available since version: 19.19 Managing the repositoriesAfter installation of GitWeb, a new repository can be created. It can be marked as private to limit access. AccessGitWeb can be accessed after installation e.g. by the web client through HTTP basic authGitWeb on FreedomBox currently supports HTTP remotes only. To avoid having to enter the password each time you pull/push to the repository, you can edit your remote to include the credentials. Example:Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only.Note: If using this method, your password will be stored in plain text in the local repository's .git/config file. For this reason, you should create a FreedomBox user who has only access to the gitweb and never use an admin account. MirroringThough your repositories are primarily hosted on your own FreedomBox, you can configure a repository on another Git hosting system like GitLab as a mirror. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/I2P.raw.xml b/doc/manual/en/I2P.raw.xml
index 9e2791b74..8497a773f 100644
--- a/doc/manual/en/I2P.raw.xml
+++ b/doc/manual/en/I2P.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/I2P12019-04-30 00:40:36SunilMohanAdapaInitial page for I2P application in FreedomBoxAnonymity Network (I2P)About I2PThe Invisible Internet Project is an anonymous network layer intended to protect communication from censorship and surveillance. I2P provides anonymity by sending encrypted traffic through a volunteer-run network distributed around the world. Find more information about I2P on their project homepage. Services OfferedThe following services are offered via I2P in FreedomBox by default. Additional services may be available when enabled from I2P router console that can be launched from FreedomBox web interface. Anonymous Internet browsing: I2P can be used to browse Internet anonymously. For this, configure your browser (preferable a Tor Browser) to connect to I2P proxy. This can be done by setting HTTP proxy and HTTPS proxy to freedombox.local (or your FreedomBox's local IP address) and ports to 4444 and 4445 respectively. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. Reaching eepsites: I2P network can host websites that can remain anonymous. These are called eepsites and end with .i2p in their domain name. For example, is the website for I2P project in the I2P network. eepsites are not reachable using a regular browser via regular Internet connection. To browse eepsites, your browser needs to be configured to use HTTP, HTTPS proxies as described above. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. Anonymous torrent downloads: I2PSnark, an application for anonymously downloading and sharing files over the BitTorrent network is available in I2P and enabled by default in FreedomBox. This application is controlled via a web interface that can be launched from 'Anonymous torrents' section of I2P app in FreedomBox web interface or from the I2P router console interface. Only logged-in users belonging to 'Manage I2P application' group can use this service. IRC network: I2P network contains an IRC network called Irc2P. This network hosts the I2P project's official IRC channel among other channels. This service is enabled by default in FreedomBox. To use it, open your favourite IRC client. Then configure it to connect to host freedombox.local (or your FreedomBox's local IP address) with port number 6668. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. I2P router console: This is the central management interface for I2P. It shows the current status of I2P, bandwidth statistics and allows modifying various configuration settings. You can tune your participation in the I2P network and use/edit a list of your favourite I2P sites (eepsites). Only logged-in users belonging to 'Manage I2P application' group can use this service. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.
\ No newline at end of file
+FreedomBox/Manual/I2P12019-04-30 00:40:36SunilMohanAdapaInitial page for I2P application in FreedomBoxAnonymity Network (I2P)About I2PThe Invisible Internet Project is an anonymous network layer intended to protect communication from censorship and surveillance. I2P provides anonymity by sending encrypted traffic through a volunteer-run network distributed around the world. Find more information about I2P on their project homepage. Services OfferedThe following services are offered via I2P in FreedomBox by default. Additional services may be available when enabled from I2P router console that can be launched from FreedomBox web interface. Anonymous Internet browsing: I2P can be used to browse Internet anonymously. For this, configure your browser (preferable a Tor Browser) to connect to I2P proxy. This can be done by setting HTTP proxy and HTTPS proxy to freedombox.local (or your FreedomBox's local IP address) and ports to 4444 and 4445 respectively. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. Reaching eepsites: I2P network can host websites that can remain anonymous. These are called eepsites and end with .i2p in their domain name. For example, is the website for I2P project in the I2P network. eepsites are not reachable using a regular browser via regular Internet connection. To browse eepsites, your browser needs to be configured to use HTTP, HTTPS proxies as described above. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. Anonymous torrent downloads: I2PSnark, an application for anonymously downloading and sharing files over the BitTorrent network is available in I2P and enabled by default in FreedomBox. This application is controlled via a web interface that can be launched from 'Anonymous torrents' section of I2P app in FreedomBox web interface or from the I2P router console interface. Only logged-in users belonging to 'Manage I2P application' group can use this service. IRC network: I2P network contains an IRC network called Irc2P. This network hosts the I2P project's official IRC channel among other channels. This service is enabled by default in FreedomBox. To use it, open your favourite IRC client. Then configure it to connect to host freedombox.local (or your FreedomBox's local IP address) with port number 6668. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. I2P router console: This is the central management interface for I2P. It shows the current status of I2P, bandwidth statistics and allows modifying various configuration settings. You can tune your participation in the I2P network and use/edit a list of your favourite I2P sites (eepsites). Only logged-in users belonging to 'Manage I2P application' group can use this service. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.
\ No newline at end of file
diff --git a/doc/manual/en/Ikiwiki.raw.xml b/doc/manual/en/Ikiwiki.raw.xml
index 3d0ae1c41..fa6fcf71c 100644
--- a/doc/manual/en/Ikiwiki.raw.xml
+++ b/doc/manual/en/Ikiwiki.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Ikiwiki92016-12-26 19:18:01JamesValleroyadd screenshots82016-09-01 19:15:54Drahtseiladapted title to Plinth wording72016-05-26 17:19:45JamesValleroynew section on adding users as wiki admins62016-04-13 01:10:28PhilippeBaretAdded blog to quick start entry in Ikiwiki Manual52016-04-13 01:00:22PhilippeBaretAdded a "Quick Start" entry in Ikiwiki manual42016-04-10 07:21:53PhilippeBaretAdded bottom navigation link32015-12-15 19:54:35PhilippeBaretAdded Ikiwiki definition22015-11-29 19:13:55PhilippeBaretadded ## BEGIN_INCLUDE12015-09-13 17:06:14JamesValleroyadd ikiwiki page for manualWiki and Blog (Ikiwiki)What is Ikiwiki?Ikiwiki converts wiki pages into HTML pages suitable for publishing on a website. It provides particularly blogging, podcasting, calendars and a large selection of plugins. Quick StartAfter the app installation on your box administration interface: Go to "Create" section and create a wiki or a blog Go back to "Configure" section and click on /ikiwiki link Click on your new wiki or blog name under "Parent directory" Enjoy your new publication page. Creating a wiki or blogYou can create a wiki or blog to be hosted on your FreedomBox through the Wiki & Blog (Ikiwiki) page in Plinth. The first time you visit this page, it will ask to install packages required by Ikiwiki. After the package install has completed, select the Create tab. You can select the type to be Wiki or Blog. Also type in a name for the wiki or blog, and the username and password for the wiki's/blog's admin account. Then click Update setup and you will see the wiki/blog added to your list. Note that each wiki/blog has its own admin account. ikiwiki: CreateAccessing your wiki or blogFrom the Wiki & Blog (Ikiwiki) page, select the Manage tab and you will see a list of your wikis and blogs. Click a name to navigate to that wiki or blog. ikiwiki: ManageFrom here, if you click Edit or Preferences, you will be taken to a login page. To log in with the admin account that you created before, select the Other tab, enter the username and password, and click Login. User login through SSOBesides the wiki/blog admin, other FreedomBox users can be given access to login and edit wikis and blogs. However, they will not have all the same permissions as the wiki admin. They can add or edit pages, but cannot change the wiki's configuration. To add a wiki user, go to the Users and Groups page in Plinth (under System configuration, the gear icon at the top right corner of the page). Create or modify a user, and add them to the wiki group. (Users in the admin group will also have wiki access.) To login as a FreedomBox user, go to the wiki/blog's login page and select the Other tab. Then click the "Login with HTTP auth" button. The browser will show a popup dialog where you can enter the username and password of the FreedomBox user. Adding FreedomBox users as wiki adminsLogin to the wiki, using the admin account that was specified when the wiki was created. Click "Preferences", then "Setup". Under "main", in the "users who are wiki admins", add the name of a user on the FreedomBox. (Optional) Under "auth plugin: passwordauth", uncheck the "enable passwordauth?" option. (Note: This will disable the old admin account login. Only SSO login using HTTP auth will be possible.) Click "Save Setup". Click "Preferences", then "Logout". Login as the new admin user using "Login with HTTP auth". Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Ikiwiki92016-12-26 19:18:01JamesValleroyadd screenshots82016-09-01 19:15:54Drahtseiladapted title to Plinth wording72016-05-26 17:19:45JamesValleroynew section on adding users as wiki admins62016-04-13 01:10:28PhilippeBaretAdded blog to quick start entry in Ikiwiki Manual52016-04-13 01:00:22PhilippeBaretAdded a "Quick Start" entry in Ikiwiki manual42016-04-10 07:21:53PhilippeBaretAdded bottom navigation link32015-12-15 19:54:35PhilippeBaretAdded Ikiwiki definition22015-11-29 19:13:55PhilippeBaretadded ## BEGIN_INCLUDE12015-09-13 17:06:14JamesValleroyadd ikiwiki page for manualWiki and Blog (Ikiwiki)What is Ikiwiki?Ikiwiki converts wiki pages into HTML pages suitable for publishing on a website. It provides particularly blogging, podcasting, calendars and a large selection of plugins. Quick StartAfter the app installation on your box administration interface: Go to "Create" section and create a wiki or a blog Go back to "Configure" section and click on /ikiwiki link Click on your new wiki or blog name under "Parent directory" Enjoy your new publication page. Creating a wiki or blogYou can create a wiki or blog to be hosted on your FreedomBox through the Wiki & Blog (Ikiwiki) page in Plinth. The first time you visit this page, it will ask to install packages required by Ikiwiki. After the package install has completed, select the Create tab. You can select the type to be Wiki or Blog. Also type in a name for the wiki or blog, and the username and password for the wiki's/blog's admin account. Then click Update setup and you will see the wiki/blog added to your list. Note that each wiki/blog has its own admin account. ikiwiki: CreateAccessing your wiki or blogFrom the Wiki & Blog (Ikiwiki) page, select the Manage tab and you will see a list of your wikis and blogs. Click a name to navigate to that wiki or blog. ikiwiki: ManageFrom here, if you click Edit or Preferences, you will be taken to a login page. To log in with the admin account that you created before, select the Other tab, enter the username and password, and click Login. User login through SSOBesides the wiki/blog admin, other FreedomBox users can be given access to login and edit wikis and blogs. However, they will not have all the same permissions as the wiki admin. They can add or edit pages, but cannot change the wiki's configuration. To add a wiki user, go to the Users and Groups page in Plinth (under System configuration, the gear icon at the top right corner of the page). Create or modify a user, and add them to the wiki group. (Users in the admin group will also have wiki access.) To login as a FreedomBox user, go to the wiki/blog's login page and select the Other tab. Then click the "Login with HTTP auth" button. The browser will show a popup dialog where you can enter the username and password of the FreedomBox user. Adding FreedomBox users as wiki adminsLogin to the wiki, using the admin account that was specified when the wiki was created. Click "Preferences", then "Setup". Under "main", in the "users who are wiki admins", add the name of a user on the FreedomBox. (Optional) Under "auth plugin: passwordauth", uncheck the "enable passwordauth?" option. (Note: This will disable the old admin account login. Only SSO login using HTTP auth will be possible.) Click "Save Setup". Click "Preferences", then "Logout". Login as the new admin user using "Login with HTTP auth". Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Infinoted.raw.xml b/doc/manual/en/Infinoted.raw.xml
index e6fc14239..caae3b25b 100644
--- a/doc/manual/en/Infinoted.raw.xml
+++ b/doc/manual/en/Infinoted.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Infinoted12017-01-21 17:23:17JamesValleroycreate page for infinotedGobby Server (infinoted)infinoted is a server for Gobby, a collaborative text editor. To use it, download Gobby, desktop client and install it. Then start Gobby and select "Connect to Server" and enter your FreedomBox's domain name. Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for infinoted: TCP 6523 Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Infinoted12017-01-21 17:23:17JamesValleroycreate page for infinotedGobby Server (infinoted)infinoted is a server for Gobby, a collaborative text editor. To use it, download Gobby, desktop client and install it. Then start Gobby and select "Connect to Server" and enter your FreedomBox's domain name. Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for infinoted: TCP 6523 Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/LetsEncrypt.raw.xml b/doc/manual/en/LetsEncrypt.raw.xml
index 6e1a694a6..c3d8391c8 100644
--- a/doc/manual/en/LetsEncrypt.raw.xml
+++ b/doc/manual/en/LetsEncrypt.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/LetsEncrypt102019-11-01 00:51:44JosephNuthalapatiFix attachment inlining92019-02-26 03:21:08JamesValleroyspelling82018-03-11 03:16:47JosephNuthalapati72017-01-19 00:18:41JamesValleroyreplace quote character62017-01-07 19:48:45JamesValleroyadd port forwarding info52017-01-07 18:21:14JamesValleroyclarify step42016-08-21 19:00:07Drahtseil32016-08-21 18:59:20DrahtseilScreencast of the setting up22016-08-21 17:57:07Drahtseilscreenshots12016-08-21 17:43:20DrahtseilCreated Let's EncyptCertificates (Let's Encrypt)A digital certificate allows users of a web service to verify the identity of the service and to securely communicate with it. FreedomBox can automatically obtain and setup digital certificates for each available domain. It does so by proving itself to be the owner of a domain to Let's Encrypt, a certificate authority (CA). Let's Encrypt is a free, automated, and open certificate authority, run for the public's benefit by the Internet Security Research Group (ISRG). Please read and agree with the Let's Encrypt Subscriber Agreement before using this service. Why using CertificatesThe communication with your FreedomBox can be secured so that it is not possible to intercept the content of the web pages viewed and about the content exchanged. How to setupIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports: TCP 80 (http) TCP 443 (https) Make the domain name known: In Configure insert your domain name, e.g. MyWebName.comLet's EncryptVerify the domain name was accepted Check that it is enabled in Name ServicesLet's Encrypt Name ServicesGo to the Certificates (Let's Encrypt) page, and complete the module install if needed. Then click the "Obtain" button for your domain name. After some minutes a valid certificate is available Let's EncryptVerify in your browser by checking https://MyWebName.comLet's Encrypt CertificateScreencast: Let's EncryptUsingThe certificate is valid for 3 months. It is renewed automatically and can also be re-obtained or revoked manually. With running diagnostics the certificate can also be verified. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/LetsEncrypt102019-11-01 00:51:44JosephNuthalapatiFix attachment inlining92019-02-26 03:21:08JamesValleroyspelling82018-03-11 03:16:47JosephNuthalapati72017-01-19 00:18:41JamesValleroyreplace quote character62017-01-07 19:48:45JamesValleroyadd port forwarding info52017-01-07 18:21:14JamesValleroyclarify step42016-08-21 19:00:07Drahtseil32016-08-21 18:59:20DrahtseilScreencast of the setting up22016-08-21 17:57:07Drahtseilscreenshots12016-08-21 17:43:20DrahtseilCreated Let's EncyptCertificates (Let's Encrypt)A digital certificate allows users of a web service to verify the identity of the service and to securely communicate with it. FreedomBox can automatically obtain and setup digital certificates for each available domain. It does so by proving itself to be the owner of a domain to Let's Encrypt, a certificate authority (CA). Let's Encrypt is a free, automated, and open certificate authority, run for the public's benefit by the Internet Security Research Group (ISRG). Please read and agree with the Let's Encrypt Subscriber Agreement before using this service. Why using CertificatesThe communication with your FreedomBox can be secured so that it is not possible to intercept the content of the web pages viewed and about the content exchanged. How to setupIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports: TCP 80 (http) TCP 443 (https) Make the domain name known: In Configure insert your domain name, e.g. MyWebName.comLet's EncryptVerify the domain name was accepted Check that it is enabled in Name ServicesLet's Encrypt Name ServicesGo to the Certificates (Let's Encrypt) page, and complete the module install if needed. Then click the "Obtain" button for your domain name. After some minutes a valid certificate is available Let's EncryptVerify in your browser by checking https://MyWebName.comLet's Encrypt CertificateScreencast: Let's EncryptUsingThe certificate is valid for 3 months. It is renewed automatically and can also be re-obtained or revoked manually. With running diagnostics the certificate can also be verified. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/MLDonkey.raw.xml b/doc/manual/en/MLDonkey.raw.xml
index b85c9a09b..ded93fb86 100644
--- a/doc/manual/en/MLDonkey.raw.xml
+++ b/doc/manual/en/MLDonkey.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/MLDonkey122019-02-08 06:29:35SunilMohanAdapaUpdate more information about clients112019-02-06 13:52:06jcromero102019-02-02 21:16:52jcromero92019-01-23 21:18:05jcromero82019-01-23 18:34:25jcromero72019-01-23 18:30:54jcromero62019-01-23 18:19:19SunilMohanAdapaEscape from linking52019-01-23 18:18:47SunilMohanAdapaWrite MLdonkey as MLDonkey42019-01-23 18:17:54SunilMohanAdapaWrite MLdonkey as MLDonkey and other minor fixes32019-01-23 17:37:32jcromero22019-01-23 13:37:48jcromero12019-01-23 13:31:23jcromeroFile Sharing (MLDonkey)What is MLDonkey?MLDonkey is an open-source, multi-protocol, peer-to-peer file sharing application that runs as a back-end server application on many platforms. It can be controlled through a user interface provided by one of many separate front-ends, including a Web interface, telnet interface and over a dozen native client programs. Originally a Linux client for the eDonkey protocol, it now runs on many flavors of Unix-like, OS X, Microsoft Windows and MorphOS and supports numerous peer-to-peer protocols including ED2K (and Kademlia and Overnet), BitTorrent, DC++ and more. Read more about MLDonkey at the MLDonkey Project WikiAvailable since: version 0.48.0 ScreenshotMLDonkey Web InterfaceUsing MLDonkey Web InterfaceAfter installing MLDonkey, its web interface can be accessed from FreedomBox at https://<your freedombox>/mldonkey. Users belonging to the ed2k and admin groups can access this web interface. Using Desktop/Mobile InterfaceMany desktop and mobile applications can be used to control MLDonkey. MLDonkey server will always be running on FreedomBox. It will download files (or upload them) and store them on FreedomBox even when your local machine is not running or connected to MLDonkey on FreedomBox. Only users of admin group can access MLDonkey on FreedomBox using desktop or mobile clients. This is due to restrictions on which group of users have SSH access into FreedomBox. Create an admin user or use an existing admin user. On your desktop machine, open a terminal and run the following command. It is recommended that you configure and use SSH keys instead of passwords for the this step. Start the GUI application and then connect it to MLDonkey as if MLDonkey is running on the local desktop machine. After you are done, terminate the SSH command by pressing Control-C. See MLDonkey documentation for SSH Tunnel for more information. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/MLDonkey122019-02-08 06:29:35SunilMohanAdapaUpdate more information about clients112019-02-06 13:52:06jcromero102019-02-02 21:16:52jcromero92019-01-23 21:18:05jcromero82019-01-23 18:34:25jcromero72019-01-23 18:30:54jcromero62019-01-23 18:19:19SunilMohanAdapaEscape from linking52019-01-23 18:18:47SunilMohanAdapaWrite MLdonkey as MLDonkey42019-01-23 18:17:54SunilMohanAdapaWrite MLdonkey as MLDonkey and other minor fixes32019-01-23 17:37:32jcromero22019-01-23 13:37:48jcromero12019-01-23 13:31:23jcromeroFile Sharing (MLDonkey)What is MLDonkey?MLDonkey is an open-source, multi-protocol, peer-to-peer file sharing application that runs as a back-end server application on many platforms. It can be controlled through a user interface provided by one of many separate front-ends, including a Web interface, telnet interface and over a dozen native client programs. Originally a Linux client for the eDonkey protocol, it now runs on many flavors of Unix-like, OS X, Microsoft Windows and MorphOS and supports numerous peer-to-peer protocols including ED2K (and Kademlia and Overnet), BitTorrent, DC++ and more. Read more about MLDonkey at the MLDonkey Project WikiAvailable since: version 0.48.0 ScreenshotMLDonkey Web InterfaceUsing MLDonkey Web InterfaceAfter installing MLDonkey, its web interface can be accessed from FreedomBox at https://<your freedombox>/mldonkey. Users belonging to the ed2k and admin groups can access this web interface. Using Desktop/Mobile InterfaceMany desktop and mobile applications can be used to control MLDonkey. MLDonkey server will always be running on FreedomBox. It will download files (or upload them) and store them on FreedomBox even when your local machine is not running or connected to MLDonkey on FreedomBox. Only users of admin group can access MLDonkey on FreedomBox using desktop or mobile clients. This is due to restrictions on which group of users have SSH access into FreedomBox. Create an admin user or use an existing admin user. On your desktop machine, open a terminal and run the following command. It is recommended that you configure and use SSH keys instead of passwords for the this step. Start the GUI application and then connect it to MLDonkey as if MLDonkey is running on the local desktop machine. After you are done, terminate the SSH command by pressing Control-C. See MLDonkey documentation for SSH Tunnel for more information. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/MatrixSynapse.raw.xml b/doc/manual/en/MatrixSynapse.raw.xml
index 5ea70929a..990f270a5 100644
--- a/doc/manual/en/MatrixSynapse.raw.xml
+++ b/doc/manual/en/MatrixSynapse.raw.xml
@@ -4,4 +4,4 @@ chown matrix-synapse:nogroup /etc/matrix-synapse/conf.d/registration_shared_secr
systemctl restart matrix-synapse
register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml]]>If you wish to see the list of users registered in Matrix Synapse, the following as root user: If you wish to create a community in Matrix Synapse, a Matrix user with server admin privileges is needed. In order to grant such privileges to username run the following commands as root user: Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+echo "UPDATE users SET admin=1 WHERE name='@username:domainname'" | sudo sqlite3 /var/lib/matrix-synapse/homeserver.db ]]>Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/MediaWiki.raw.xml b/doc/manual/en/MediaWiki.raw.xml
index ea681ca03..900fcc3ed 100644
--- a/doc/manual/en/MediaWiki.raw.xml
+++ b/doc/manual/en/MediaWiki.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/MediaWiki142020-04-12 16:05:09JamesValleroyadd links back to top level pages132020-01-24 11:40:30JosephNuthalapatiAdd screenshot of editor toolbar122020-01-24 11:38:30JosephNuthalapatiMention the default wiki editor in "Editing Wiki content"112020-01-21 08:09:53fioddorCustomization section moved at the end because the others are more generic.102020-01-18 09:41:15JosephNuthalapatiAdd customization section92018-08-28 09:42:01JosephNuthalapatiRemove internal links to MediaWiki82018-08-27 23:58:16JamesValleroytry to close last section72018-08-27 23:43:48JamesValleroyadd consistent newlines after headings62018-08-27 23:41:37JamesValleroyspelling52018-08-21 07:33:32JosephNuthalapati42018-08-21 07:32:43JosephNuthalapatiUpdate wiki to include new features32018-01-31 06:02:30SunilMohanAdapaAdd footer and category22018-01-17 10:26:45JosephNuthalapatiFix headings12018-01-13 04:01:22JosephNuthalapatiNew wiki entry for MediaWiki on FreedomBoxWiki (MediaWiki)About MediaWikiMediaWiki is the software that powers the Wikimedia suite of wikis. Read more about MediaWiki on WikipediaAvailable since: version 0.20.0 MediaWiki on FreedomBoxMediaWiki on FreedomBox is configured to be publicly readable and privately editable. Only logged in users can make edits to the wiki. This configuration prevents spam and vandalism on the wiki. User managementUsers can be created by the MediaWiki administrator (user "admin") only. The "admin" user can also be used to reset passwords of MediaWiki users. The administrator password, if forgotten can be reset anytime from the MediaWiki app page in web interface. Use casesMediaWiki is quite versatile and can be put to many creative uses. It also comes with a lot of plugins and themes and is highly customizable. Personal Knowledge RepositoryMediaWiki on FreedomBox can be your own personal knowledge repository. Since MediaWiki has good multimedia support, you can write notes, store images, create checklists, store references and bookmarks etc. in an organized manner. You can store the knowledge of a lifetime in your MediaWiki instance. Community WikiA community of users can use MediaWiki as their common repository of knowledge and reference material. It can used as a college notice board, documentation server for a small company, common notebook for study groups or as a fan wiki like wikia. Personal Wiki-based WebsiteSeveral websites on the internet are simply MediaWiki instances. MediaWiki on FreedomBox is read-only to visitors. Hence, it can be adapted to serve as your personal website and/or blog. MediaWiki content is easy to export and can be later moved to use another blog engine. Editing Wiki ContentThe MediaWiki installation on FreedomBox ships with a basic editor with a toolbar for common options like Bold, Italics etc. Click on the Advanced section for more options like Headings, bullet lists etc. mediawiki-toolbar.pngVisual EditorMediaWiki's new Visual Editor gives a WYSIWYG user interface to creating wiki pages. This is still a Beta feature and is not provided by default with MediaWiki. A workaround is to use write your content using the Visual Editor in Wikipedia's Sandbox, switching to source editing mode and copying the content into your wiki. Other FormatsYou don't have to necessarily learn the MediaWiki formatting language. You can write in your favorite format (Markdown, Org-mode, LaTeX etc.) and convert it to the MediaWiki format using Pandoc. Image UploadsImage uploads have been enabled since FreedomBox version 0.36.0. You can also directly use images from Wikimedia Commons using a feature called Instant Commons. CustomizationSkinsMediaWiki's default skin is usually Vector. The default skin set by FreedomBox is Timeless. Vector is a skin best-suited for viewing on desktop browsers. It is not suitable for mobile screen sizes. Wikimedia sites host a separate mobile site. It is not worth hosting a separate mobile site for small MediaWiki installations like those on FreedomBox. Using a mobile-friendly skin like Timeless is a cheaper way of solving the problem. Administrators can choose a default skin from the app configuration. Users of the site also have the choice of viewing it with a different skin. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/MediaWiki142020-04-12 16:05:09JamesValleroyadd links back to top level pages132020-01-24 11:40:30JosephNuthalapatiAdd screenshot of editor toolbar122020-01-24 11:38:30JosephNuthalapatiMention the default wiki editor in "Editing Wiki content"112020-01-21 08:09:53fioddorCustomization section moved at the end because the others are more generic.102020-01-18 09:41:15JosephNuthalapatiAdd customization section92018-08-28 09:42:01JosephNuthalapatiRemove internal links to MediaWiki82018-08-27 23:58:16JamesValleroytry to close last section72018-08-27 23:43:48JamesValleroyadd consistent newlines after headings62018-08-27 23:41:37JamesValleroyspelling52018-08-21 07:33:32JosephNuthalapati42018-08-21 07:32:43JosephNuthalapatiUpdate wiki to include new features32018-01-31 06:02:30SunilMohanAdapaAdd footer and category22018-01-17 10:26:45JosephNuthalapatiFix headings12018-01-13 04:01:22JosephNuthalapatiNew wiki entry for MediaWiki on FreedomBoxWiki (MediaWiki)About MediaWikiMediaWiki is the software that powers the Wikimedia suite of wikis. Read more about MediaWiki on WikipediaAvailable since: version 0.20.0 MediaWiki on FreedomBoxMediaWiki on FreedomBox is configured to be publicly readable and privately editable. Only logged in users can make edits to the wiki. This configuration prevents spam and vandalism on the wiki. User managementUsers can be created by the MediaWiki administrator (user "admin") only. The "admin" user can also be used to reset passwords of MediaWiki users. The administrator password, if forgotten can be reset anytime from the MediaWiki app page in web interface. Use casesMediaWiki is quite versatile and can be put to many creative uses. It also comes with a lot of plugins and themes and is highly customizable. Personal Knowledge RepositoryMediaWiki on FreedomBox can be your own personal knowledge repository. Since MediaWiki has good multimedia support, you can write notes, store images, create checklists, store references and bookmarks etc. in an organized manner. You can store the knowledge of a lifetime in your MediaWiki instance. Community WikiA community of users can use MediaWiki as their common repository of knowledge and reference material. It can used as a college notice board, documentation server for a small company, common notebook for study groups or as a fan wiki like wikia. Personal Wiki-based WebsiteSeveral websites on the internet are simply MediaWiki instances. MediaWiki on FreedomBox is read-only to visitors. Hence, it can be adapted to serve as your personal website and/or blog. MediaWiki content is easy to export and can be later moved to use another blog engine. Editing Wiki ContentThe MediaWiki installation on FreedomBox ships with a basic editor with a toolbar for common options like Bold, Italics etc. Click on the Advanced section for more options like Headings, bullet lists etc. mediawiki-toolbar.pngVisual EditorMediaWiki's new Visual Editor gives a WYSIWYG user interface to creating wiki pages. This is still a Beta feature and is not provided by default with MediaWiki. A workaround is to use write your content using the Visual Editor in Wikipedia's Sandbox, switching to source editing mode and copying the content into your wiki. Other FormatsYou don't have to necessarily learn the MediaWiki formatting language. You can write in your favorite format (Markdown, Org-mode, LaTeX etc.) and convert it to the MediaWiki format using Pandoc. Image UploadsImage uploads have been enabled since FreedomBox version 0.36.0. You can also directly use images from Wikimedia Commons using a feature called Instant Commons. CustomizationSkinsMediaWiki's default skin is usually Vector. The default skin set by FreedomBox is Timeless. Vector is a skin best-suited for viewing on desktop browsers. It is not suitable for mobile screen sizes. Wikimedia sites host a separate mobile site. It is not worth hosting a separate mobile site for small MediaWiki installations like those on FreedomBox. Using a mobile-friendly skin like Timeless is a cheaper way of solving the problem. Administrators can choose a default skin from the app configuration. Users of the site also have the choice of viewing it with a different skin. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Minetest.raw.xml b/doc/manual/en/Minetest.raw.xml
index 5a4e12486..eeebc08bd 100644
--- a/doc/manual/en/Minetest.raw.xml
+++ b/doc/manual/en/Minetest.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Minetest42020-05-03 18:37:00JamesValleroyuse https link32017-01-02 13:29:19JamesValleroyfix list22017-01-02 13:26:03JamesValleroyadd port forwarding info12016-09-04 10:20:44Drahtseilstub createdBlock Sandbox (Minetest)Minetest is a multiplayer infinite-world block sandbox. This module enables the Minetest server to be run on this FreedomBox, on the default port (30000). To connect to the server, a Minetest client is needed. Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Minetest: UDP 30000 Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Minetest42020-05-03 18:37:00JamesValleroyuse https link32017-01-02 13:29:19JamesValleroyfix list22017-01-02 13:26:03JamesValleroyadd port forwarding info12016-09-04 10:20:44Drahtseilstub createdBlock Sandbox (Minetest)Minetest is a multiplayer infinite-world block sandbox. This module enables the Minetest server to be run on this FreedomBox, on the default port (30000). To connect to the server, a Minetest client is needed. Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Minetest: UDP 30000 Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/MiniDLNA.raw.xml b/doc/manual/en/MiniDLNA.raw.xml
index 79101f123..899e050b9 100644
--- a/doc/manual/en/MiniDLNA.raw.xml
+++ b/doc/manual/en/MiniDLNA.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/MiniDLNA22019-11-21 20:18:10NektariosKatakis12019-11-20 16:49:59NektariosKatakisMiniDLNAMiniDLNA is a media server with the aim to be compliant with DLNA/UPnP clients. What is UPnP/DLNA?Universal plug & play is a set of networking protocols that allow devices within a network such as PCs, TVs, printers etc. to seamlessly discover each other and establish communication for data sharing. It is zero configuration protocol and requires only a media server and a media player that are compliant with the protocol. DLNA is derived from UPnP as a form of standardizing media interoperability. It forms a standard/certification which many consumer electronics conform to. Setting up MiniDLNA on your FreedomBox.To install/enable the media server you need to navigate at MiniDLNA page and enable it. The application is intended to be available in the internal (home) network and therefore it requires a network interface configured for internal traffic. After installation a web page becomes available on . It includes information for how many files the server is detecting, how many connections exist etc. This is very useful if plugging external disks with media to check if the new media files are detected properly. If that is not happening, disabling and enabling the server will fix it. File systems for external drives.If using an external drive that is used also from a Windows system the preferred filesystem should be NTFS. NTFS will keep Linux file permissions and UTF8 encoding for file names. This is useful if file names are in your language. External linksBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/MiniDLNA22019-11-21 20:18:10NektariosKatakis12019-11-20 16:49:59NektariosKatakisMiniDLNAMiniDLNA is a media server with the aim to be compliant with DLNA/UPnP clients. What is UPnP/DLNA?Universal plug & play is a set of networking protocols that allow devices within a network such as PCs, TVs, printers etc. to seamlessly discover each other and establish communication for data sharing. It is zero configuration protocol and requires only a media server and a media player that are compliant with the protocol. DLNA is derived from UPnP as a form of standardizing media interoperability. It forms a standard/certification which many consumer electronics conform to. Setting up MiniDLNA on your FreedomBox.To install/enable the media server you need to navigate at MiniDLNA page and enable it. The application is intended to be available in the internal (home) network and therefore it requires a network interface configured for internal traffic. After installation a web page becomes available on . It includes information for how many files the server is detecting, how many connections exist etc. This is very useful if plugging external disks with media to check if the new media files are detected properly. If that is not happening, disabling and enabling the server will fix it. File systems for external drives.If using an external drive that is used also from a Windows system the preferred filesystem should be NTFS. NTFS will keep Linux file permissions and UTF8 encoding for file names. This is useful if file names are in your language. External linksBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Monkeysphere.raw.xml b/doc/manual/en/Monkeysphere.raw.xml
index b832e85c4..b60e2a413 100644
--- a/doc/manual/en/Monkeysphere.raw.xml
+++ b/doc/manual/en/Monkeysphere.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Monkeysphere12016-09-04 10:12:10Drahtseilstub createdMonkeysphereWith Monkeysphere, an OpenPGP key can be generated for each configured domain serving SSH. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users connecting to this machine through SSH can verify that they are connecting to the correct host. For users to trust the key, at least one person (usually the machine owner) must sign the key using the regular OpenPGP key signing process. See the Monkeysphere SSH documentation for more details. Monkeysphere can also generate an OpenPGP key for each Secure Web Server (HTTPS) certificate installed on this machine. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users accessing the web server through HTTPS can verify that they are connecting to the correct host. To validate the certificate, the user will need to install some software that is available on the Monkeysphere website. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Monkeysphere12016-09-04 10:12:10Drahtseilstub createdMonkeysphereWith Monkeysphere, an OpenPGP key can be generated for each configured domain serving SSH. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users connecting to this machine through SSH can verify that they are connecting to the correct host. For users to trust the key, at least one person (usually the machine owner) must sign the key using the regular OpenPGP key signing process. See the Monkeysphere SSH documentation for more details. Monkeysphere can also generate an OpenPGP key for each Secure Web Server (HTTPS) certificate installed on this machine. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users accessing the web server through HTTPS can verify that they are connecting to the correct host. To validate the certificate, the user will need to install some software that is available on the Monkeysphere website. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Mumble.raw.xml b/doc/manual/en/Mumble.raw.xml
index be7912edf..9b849a777 100644
--- a/doc/manual/en/Mumble.raw.xml
+++ b/doc/manual/en/Mumble.raw.xml
@@ -1,2 +1,2 @@
FreedomBox/Manual/Mumble92019-11-07 03:25:36SunilMohanAdapaUpdate super user section82019-11-07 02:51:23SunilMohanAdapaMinor formatting72019-11-07 02:50:58SunilMohanAdapaAdded section about SuperUser account62017-01-02 13:28:53JamesValleroyadd port forwarding info52016-12-31 04:04:56JamesValleroyadd basic usage info42016-09-01 19:14:55Drahtseiladapted title to Plinth wording32016-04-10 07:20:42PhilippeBaretAdded bottom navigation link22015-12-15 20:51:58PhilippeBaret12015-12-15 20:06:18PhilippeBaretAdded Mumble page and definition.Voice Chat (Mumble)What is Mumble?Mumble is a voice chat software. Primarily intended for use while gaming, it is suitable for simple talking with high audio quality, noise suppression, encrypted communication, public/private-key authentication by default, and "wizards" to configure your microphone for instance. A user can be marked as a "priority speaker" within a channel. Using MumbleFreedomBox includes the Mumble server. Clients are available for desktop and mobile platforms. Users can download one of these clients and connect to the server. Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Mumble: TCP 64738 UDP 64738 Managing PermissionsA super user in Mumble has the ability to create administrator accounts who can in turn manage groups and channel permissions. This can be done after logging in with the username "SuperUser" using the super user password. See Mumble Guide for information on how to do this.. FreedomBox currently does not offer a UI to get or set the super user password for Mumble. A super user password is automatically generated during Mumble setup. To get the password, login to the terminal as admin user using Cockpit , Secure Shell or the console. Then, to read the super user password that was automatically generated during Mumble installation run the following command: You should see output such as: 2019-11-06 02:47:41.313 1 => Password for 'SuperUser' set to 'noo8Dahwiesh']]>Alternatively, you can set a new password as follows: Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc/mumble-server.ini --readsupw"]]>Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/NameServices.raw.xml b/doc/manual/en/NameServices.raw.xml
index c8ac851b9..f0336ca96 100644
--- a/doc/manual/en/NameServices.raw.xml
+++ b/doc/manual/en/NameServices.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/NameServices42019-11-11 16:58:04JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service32016-12-31 04:18:51JamesValleroyreword22016-08-21 17:16:56Drahtseil12016-08-21 17:16:41DrahtseilCreated NameServicesName ServicesName Services provides an overview of ways the box can be reached from the public Internet: domain name, Tor Onion Service, and Pagekite. For each type of name, it is shown whether the HTTP, HTTPS, and SSH services are enabled or disabled for incoming connections through the given name. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/NameServices42019-11-11 16:58:04JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service32016-12-31 04:18:51JamesValleroyreword22016-08-21 17:16:56Drahtseil12016-08-21 17:16:41DrahtseilCreated NameServicesName ServicesName Services provides an overview of ways the box can be reached from the public Internet: domain name, Tor Onion Service, and Pagekite. For each type of name, it is shown whether the HTTP, HTTPS, and SSH services are enabled or disabled for incoming connections through the given name. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Networks.raw.xml b/doc/manual/en/Networks.raw.xml
index 535d66af2..95c99224a 100644
--- a/doc/manual/en/Networks.raw.xml
+++ b/doc/manual/en/Networks.raw.xml
@@ -2,4 +2,4 @@
wifi.scan-rand-mac-address=no]]>Then reboot the machine. Adding a new network deviceWhen a new network device is added, network manager will automatically configure it. In most cases this will not work to your liking. Delete the automatic configuration created on the interface and create a new network connection. Select your newly added network interface in the add connection page. Then set firewall zone to internal and external appropriately. You can configure the interface to connect to a network or provide network configuration to whatever machine connects to it. Similarly, if it is a Wi-Fi interface, you can configure it to become a Wi-FI access point or to connect to an existing access points in the network. Configuring a mesh networkFreedomBox has rudimentary support for participating in BATMAN-Adv based mesh networks. It is possible to either join an existing network in your area or create a new mesh network and share your Internet connection with the rest of the nodes that join the network. Currently, two connections have to be created and activated manually to join or create a mesh network. Joining a mesh networkTo join an existing mesh network in your area, first consult the organizers and get information about the mesh network. Create a new connection, then select the connection type as Wi-Fi. In the following dialog, provide the following values: Field NameExample ValueExplanationConnection Name Mesh Join - BATMAN The name must end with 'BATMAN' (uppercase) Physical Interface wlan0 The Wi-Fi device you wish to use for joining the mesh network Firewall Zone External Since you don't wish that participants in mesh network to use internal services of FreedomBox SSID ch1.freifunk.net As provided to you by the operators of the mesh network. You should see this as a network in Nearby Wi-Fi NetworksMode Ad-hoc Because this is a peer-to-peer network Frequency Band 2.4Ghz As provided to you by the operators of the mesh network Channel 1 As provided to you by the operators of the mesh network BSSID 12:CA:FF:EE:BA:BE As provided to you by the operators of the mesh network Authentication Open Leave this as open, unless you know your mesh network needs it be otherwise Passphrase Leave empty unless you know your mesh network requires one IPv4 Addressing Method Disabled We don't want to request IP configuration information yet Save the connection. Join the mesh network by activating this newly created connection. Create a second new connection, then select the connection type as Generic. In the following dialog, provide this following values: Field NameExample ValueExplanationConnection Name Mesh Connect Any name to identify this connection Physical Interface bat0 This interface will only show up after you successfully activate the connection in first step Firewall Zone External Since you don't wish that participants in mesh network to use internal services of FreedomBox IPv4 Addressing Method Auto Mesh networks usually have a DHCP server somewhere that provide your machine with IP configuration. If not, consult the operator and configure IP address setting accordingly with Manual method Save the connection. Configure your machine for participation in the network by activating this connection. Currently, this connection has to be manually activated every time you need to join the network. In future, FreedomBox will do this automatically. You will now be able reach other nodes in the network. You will also be able to connect to the Internet via the mesh network if there is an Internet connection point somewhere in mesh as setup by the operators. Creating a mesh networkTo create your own mesh network and share your Internet connection with the rest of the nodes in the network: Follow the instructions as provided above in step 1 of Joining a mesh network but choose and fix upon your own valid values for SSID (a name for you mesh network), Frequency Band (usually 2.4Ghz), Channel (1 to 11 in 2.4Ghz band) and BSSID (a hex value like 12:CA:DE:AD:BE:EF). Create this connection and activate it. Follow the instructions as provided above in step 2 of Joining a mesh network but select IPv4 Addressing Method as Shared. This will provide automatic IP configuration to other nodes in the network as well as share the Internet connection on your machine (achieved using a second Wi-Fi interface, using Ethernet, etc.) with other nodes in the mesh network. Spread the word about your mesh network to your neighbors and let them know the parameters you have provided when creating the network. When other nodes connect to this mesh network, they have to follow steps in Joining a mesh network but use the values for SSID, Frequency Band and Channel that you have chosen when you created the mesh network. Manual Network OperationFreedomBox automatically configures networks by default and provides a simplified interface to customize the configuration to specific needs. In most cases, manual operation is not necessary. The following steps describe how to manually operate network configuration in the event that a user finds FreedomBox interface to insufficient for task at hand or to diagnose a problem that FreedomBox does not identify. On the command line interface: For text based user interface for configuring network connections: To see the list of available network devices: To see the list of configured connections: To see the current status of a connection: ']]>To see the current firewall zone assigned to a network interface: ' | grep zone]]>or To create a new network connection: " ifname "" type ethernet
nmcli con modify "" connection.autoconnect TRUE
-nmcli con modify "" connection.zone internal]]>To change the firewall zone for a connection: " connection.zone ""]]>For more information on how to use nmcli command, see its man page. Also for a full list of configuration settings and type of connections accepted by Network Manager see: To see the current status of the firewall and manually operate it, see the Firewall section. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+nmcli con modify "" connection.zone internal]]>To change the firewall zone for a connection: " connection.zone ""]]>For more information on how to use nmcli command, see its man page. Also for a full list of configuration settings and type of connections accepted by Network Manager see: To see the current status of the firewall and manually operate it, see the Firewall section. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/OpenVPN.raw.xml b/doc/manual/en/OpenVPN.raw.xml
index a98b44a6f..ecbfd15bb 100644
--- a/doc/manual/en/OpenVPN.raw.xml
+++ b/doc/manual/en/OpenVPN.raw.xml
@@ -1,4 +1,4 @@
FreedomBox/Manual/OpenVPN162019-11-18 22:55:39JamesValleroyadd instructions for Network Manager152019-09-16 09:38:50fioddorMinor layout correction142019-05-10 23:08:07JamesValleroyuse standard text for port forwarding132019-03-01 01:28:15SunilMohanAdapaAdd instructions for connecting using mobile client122019-03-01 00:48:12SunilMohanAdapaAdd information about browsing Internet112019-03-01 00:37:30SunilMohanAdapaUpdate information about dealing with profile files102019-02-28 09:38:45JosephNuthalapatiUpdate image and set width92018-11-15 11:47:34JosephNuthalapatiAdd documentation on how to connect to VPN from Debian and check the connection. Update external link82016-12-31 04:01:13JamesValleroyclarify install vs setup72016-09-09 15:37:55SunilMohanAdapaMinor indentation fix with screenshot62016-09-01 19:14:03Drahtseiladapted title to Plinth wording52016-08-14 19:39:09JanCostermansadded screenshot and setting up sections42016-04-10 07:16:50PhilippeBaretAdded bottom navigation link32015-12-16 00:32:58PhilippeBaretText finishing22015-12-16 00:28:34PhilippeBaretAdded definition for OpenVPN12015-12-15 23:58:42PhilippeBaretAdded first content [OpenVPN page to Apps manual]Virtual Private Network (OpenVPN)What is OpenVPN?OpenVPN provides to your FreedomBox a virtual private network service. You can use this software for remote access, site-to-site VPNs and Wi-Fi security. OpenVPN includes support for dynamic IP addresses and NAT. Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for OpenVPN: UDP 1194 Setting upIn Plinth apps menu, select Virtual Private Network (OpenVPN) and click Install. After the module is installed, there is an additional setup step that may take a long time to complete. Click "Start setup" to begin. OpenVPN service pageWait for the setup to finish. This could take a while. Once the setup of the OpenVPN server is complete, you can download your profile. This will download a file called <USER>.ovpn, where <USER> is the name of a FreedomBox user. Each FreedomBox user will be able to download a different profile. Users who are not administrators can download the profile from home page after login. The ovpn file contains all the information a vpn client needs to connect to the server. The downloaded profile contains the domain name of the FreedomBox that the client should connect to. This is picked up from the domain configured in 'Config' section of 'System' page. In case your domain is not configured properly, you may need to change this value after downloading the profile. If your OpenVPN client allows it, you can do this after importing the OpenVPN profile. Otherwise, you can edit the .ovpn profile file in a text editor and change the 'remote' line to contain the WAN IP address or hostname of your FreedomBox as follows. Browsing Internet after connecting to VPNAfter connecting to the VPN, the client device will be able to browse the Internet without any further configuration. However, a pre-condition for this to work is that you need to have at least one Internet connected network interface which is part of the 'External' firewall zone. Use the networks configuration page to edit the firewall zone for the device's network interfaces. UsageOn Android/LineageOSVisit FreedomBox home page. Login with your user account. From home page, download the OpenVPN profile. The file will be named username.ovpn. OpenVPN Download ProfileDownload an OpenVPN client such as OpenVPN for Android. F-Droid repository is recommended. In the app, select import profile. OpenVPN AppIn the select profile dialog, choose the username.opvn file you have just downloaded. Provide a name for the connection and save the profile. OpenVPN import profileNewly created profile will show up. If necessary, edit the profile and set the domain name of your FreedomBox as the server address. OpenVPN profile createdOpenVPN edit domain nameConnect by tapping on the profile. OpenVPN connectOpenVPN connectedWhen done, disconnect by tapping on the profile. OpenVPN disconnectOn DebianInstall an OpenVPN client for your system Open the ovpn file with the OpenVPN client. .ovpn]]>If you use Network Manager, you can create a new connection by importing the file: .ovpn]]>Checking if you are connectedOn DebianTry to ping the FreedomBox or other devices on the local network. Running the command ip addr should show a tun0 connection. The command traceroute freedombox.org should show you the ip address of the VPN server as the first hop. External LinksBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+$ sudo nmcli connection import type openvpn file /path/to/.ovpn]]>Checking if you are connectedOn DebianTry to ping the FreedomBox or other devices on the local network. Running the command ip addr should show a tun0 connection. The command traceroute freedombox.org should show you the ip address of the VPN server as the first hop. External LinksBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/PageKite.raw.xml b/doc/manual/en/PageKite.raw.xml
index b10c30ba9..e430abd81 100644
--- a/doc/manual/en/PageKite.raw.xml
+++ b/doc/manual/en/PageKite.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/PageKite122017-01-07 20:37:22JamesValleroyadd info on getting certificate112017-01-07 20:21:47JamesValleroyadd instructions102017-01-07 20:14:44JamesValleroyclarify how pagekite works92016-09-01 19:19:45Drahtseiladapted title to Plinth wording82016-04-10 07:13:20PhilippeBaretAdded navigation link72015-12-15 20:50:09PhilippeBaretCorrection62015-12-15 19:28:57PhilippeBaretAdded more definition52015-12-15 19:19:27PhilippeBaretAdded pagekite extended definition42015-09-13 14:58:24SunilMohanAdapaAdd headings for inclusion into manual32015-09-13 13:18:15SunilMohanAdapaMove PageKite page to manual22015-02-13 05:01:10SunilMohanAdapaInclude FreedomBox portal in footer12012-09-14 07:37:02planetlargPublic Visibility (PageKite)What is PageKite?PageKite makes local websites and services publicly accessible immediately without creating yourself a public IP address. It does this by tunneling protocols such as HTTPS or SSH through firewalls and NAT. Using PageKite requires an account on a PageKite relay service. One such service is . A PageKite relay service will allow you to create kites. Kites are similar to domain names, but with different advantages and drawbacks. A kite can have a number of configured services. PageKite is known to work with HTTP, HTTPS, and SSH, and may work with some other services, but not all. Using PageKiteCreate an account on a PageKite relay service. Add a kite to your account. Note your kite name and kite secret. In Plinth, go to the "Configure PageKite" tab on the Public Visibility (PageKite) page. Check the "Enable PageKite" box, then enter your kite name and kite secret. Click "Save settings". On the "Standard Services" tab, you can enable HTTP and HTTPS (recommended) and SSH (optional). HTTP is needed to obtain the Let's Encrypt certificate. You can disable it later. On the Certificates (Let's Encrypt) page, you can obtain a Let's Encrypt certificate for your kite name. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/PageKite122017-01-07 20:37:22JamesValleroyadd info on getting certificate112017-01-07 20:21:47JamesValleroyadd instructions102017-01-07 20:14:44JamesValleroyclarify how pagekite works92016-09-01 19:19:45Drahtseiladapted title to Plinth wording82016-04-10 07:13:20PhilippeBaretAdded navigation link72015-12-15 20:50:09PhilippeBaretCorrection62015-12-15 19:28:57PhilippeBaretAdded more definition52015-12-15 19:19:27PhilippeBaretAdded pagekite extended definition42015-09-13 14:58:24SunilMohanAdapaAdd headings for inclusion into manual32015-09-13 13:18:15SunilMohanAdapaMove PageKite page to manual22015-02-13 05:01:10SunilMohanAdapaInclude FreedomBox portal in footer12012-09-14 07:37:02planetlargPublic Visibility (PageKite)What is PageKite?PageKite makes local websites and services publicly accessible immediately without creating yourself a public IP address. It does this by tunneling protocols such as HTTPS or SSH through firewalls and NAT. Using PageKite requires an account on a PageKite relay service. One such service is . A PageKite relay service will allow you to create kites. Kites are similar to domain names, but with different advantages and drawbacks. A kite can have a number of configured services. PageKite is known to work with HTTP, HTTPS, and SSH, and may work with some other services, but not all. Using PageKiteCreate an account on a PageKite relay service. Add a kite to your account. Note your kite name and kite secret. In Plinth, go to the "Configure PageKite" tab on the Public Visibility (PageKite) page. Check the "Enable PageKite" box, then enter your kite name and kite secret. Click "Save settings". On the "Standard Services" tab, you can enable HTTP and HTTPS (recommended) and SSH (optional). HTTP is needed to obtain the Let's Encrypt certificate. You can disable it later. On the Certificates (Let's Encrypt) page, you can obtain a Let's Encrypt certificate for your kite name. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Performance.raw.xml b/doc/manual/en/Performance.raw.xml
index 63d99f3c4..726f98563 100644
--- a/doc/manual/en/Performance.raw.xml
+++ b/doc/manual/en/Performance.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Performance42020-05-04 08:31:15FredLeMeurWIP:performance: introduce Performance Co-Pilot (cockpit-pcp) in ‘System’32020-05-04 08:28:10FredLeMeur22020-05-04 08:07:58FredLeMeurwith "END_INCLUDE"12020-05-04 08:01:29FredLeMeurinit pagePerformance (cockpit-pcp)Cockpit support for reading PCP metrics and loading PCP archives. Performance Co-Pilot (PCP) is a framework and services to support system-level performance monitoring and performance management. When this system app is installed and enabled, cockpit's graphs show the past (up to one week). one-week.pngBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Performance102020-05-12 04:51:34SunilMohanAdapaCockpit allows viewing upto 1 year at a time92020-05-12 04:40:54SunilMohanAdapaRename the image, minor formatting82020-05-12 04:39:38SunilMohanAdapaAdd the version availability and minor changes72020-05-08 06:41:27FredLeMeurup to 2 weeks62020-05-08 06:32:56FredLeMeurExplain why performance monitoring is needed.52020-05-05 12:39:58FredLeMeurzoom out button42020-05-04 08:31:15FredLeMeurWIP:performance: introduce Performance Co-Pilot (cockpit-pcp) in ‘System’32020-05-04 08:28:10FredLeMeur22020-05-04 08:07:58FredLeMeurwith "END_INCLUDE"12020-05-04 08:01:29FredLeMeurinit pagePerformance (cockpit-pcp)Performance app allows you to collect, store and view information about utilization of the hardware. This can gives you basic insights into usage patterns and whether the hardware is overloaded by users and services. Performance metrics are collected by Performance Co-Pilot and can be viewed using the Cockpit app. Performance app is available in FreedomBox since version 20.9. When this system app is installed and enabled, cockpit's graphs shows the past (up to one year at a time). performance-one-week.pngBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Power.raw.xml b/doc/manual/en/Power.raw.xml
index 27992cde3..9714196b9 100644
--- a/doc/manual/en/Power.raw.xml
+++ b/doc/manual/en/Power.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Power32019-02-28 16:33:32JosephNuthalapatiRestart and shut down options in user menu22017-01-07 20:38:36JamesValleroynote confirmation12016-08-21 09:29:59DrahtseilCreated PowerPowerPower provides an easy way to restart or shut down FreedomBox. After you select "Restart" or "Shut Down", you will be asked to confirm. "Restart" and "Shut Down" options can also be reached from the user dropdown menu on the top right. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Power32019-02-28 16:33:32JosephNuthalapatiRestart and shut down options in user menu22017-01-07 20:38:36JamesValleroynote confirmation12016-08-21 09:29:59DrahtseilCreated PowerPowerPower provides an easy way to restart or shut down FreedomBox. After you select "Restart" or "Shut Down", you will be asked to confirm. "Restart" and "Shut Down" options can also be reached from the user dropdown menu on the top right. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Privoxy.raw.xml b/doc/manual/en/Privoxy.raw.xml
index 08c80e0b7..bb30d43df 100644
--- a/doc/manual/en/Privoxy.raw.xml
+++ b/doc/manual/en/Privoxy.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Privoxy132020-05-03 18:51:16JamesValleroyuse https link for Quickstart122020-05-03 18:49:54JamesValleroyuse https link for FAQ112019-09-16 12:07:52fioddorMinor correction102018-03-11 03:09:16JosephNuthalapatiFix oversized images92016-09-09 15:39:20SunilMohanAdapaMinor indentation fix with screenshots82016-09-09 15:31:16SunilMohanAdapaPromote the visibility of the screencast72016-08-09 19:09:55Drahtseilconfiguration for advanced users62016-08-06 20:02:42DrahtseilScreencast of the setting up52016-08-06 17:57:33Drahtseilscreenshots42016-08-01 19:38:35DrahtseilVery basic restructuring as preparation for more work to be done.32016-04-10 07:24:20PhilippeBaretAdded bottom navigation link22015-12-15 20:54:14PhilippeBaretAdded link to Privoxy FAQ12015-12-15 20:22:00PhilippeBaretAdded Privoxy page and definitionWeb Proxy (Privoxy)A web proxy acts as a filter for incoming and outgoing web traffic. Thus, you can instruct any computer in your network to pass internet traffic through the proxy to remove unwanted ads and tracking mechanisms. Privoxy is a software for security, privacy, and accurate control over the web. It provides a much more powerful web proxy (and anonymity on the web) than what your browser can offer. Privoxy "is a proxy that is primarily focused on privacy enhancement, ad and junk elimination and freeing the user from restrictions placed on his activities" (source: Privoxy FAQ). ScreencastWatch the screencast on how to setup and use Privoxy in FreedomBox. Setting upIn Plinth install Web Proxy (Privoxy)Privoxy InstallationAdapt your browser proxy settings to your FreedomBox hostname (or IP address) with port 8118. Please note that Privoxy can only proxy HTTP and HTTPS traffic. It will not work with FTP or other protocols. Privoxy Browser SettingsGo to page or . If Privoxy is installed properly, you will be able to configure it in detail; if not you will see an error message. If you are using a laptop that occasionally has to connect through other routers than yours with the FreedomBox and Privoxy, you may want to install a proxy switch add-on that allows you to easily turn the proxy on or off. Advanced UsersThe default installation should provide a reasonable starting point for most. There will undoubtedly be occasions where you will want to adjust the configuration, that can be dealt with as the need arises. While using Privoxy, you can see its configuration details and documentation at or . To enable changing these configurations, you first have to change the value of enable-edit-actions in /etc/privoxy/config to 1. Before doing so, read carefully the manual, especially: Access to the editor can not be controlled separately by "ACLs" or HTTP authentication, so that everybody who can access Privoxy can modify its configuration for all users. This option is not recommended for environments with untrusted users. Note that malicious client side code (e.g Java) is also capable of using the actions editor and you shouldn't enable this options unless you understand the consequences and are sure your browser is configured correctly.Now you find an EDIT button on the configuration screen in http://config.privoxy.org/. The Quickstart is a good starting point to read on how to define own blocking and filtering rules. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Privoxy132020-05-03 18:51:16JamesValleroyuse https link for Quickstart122020-05-03 18:49:54JamesValleroyuse https link for FAQ112019-09-16 12:07:52fioddorMinor correction102018-03-11 03:09:16JosephNuthalapatiFix oversized images92016-09-09 15:39:20SunilMohanAdapaMinor indentation fix with screenshots82016-09-09 15:31:16SunilMohanAdapaPromote the visibility of the screencast72016-08-09 19:09:55Drahtseilconfiguration for advanced users62016-08-06 20:02:42DrahtseilScreencast of the setting up52016-08-06 17:57:33Drahtseilscreenshots42016-08-01 19:38:35DrahtseilVery basic restructuring as preparation for more work to be done.32016-04-10 07:24:20PhilippeBaretAdded bottom navigation link22015-12-15 20:54:14PhilippeBaretAdded link to Privoxy FAQ12015-12-15 20:22:00PhilippeBaretAdded Privoxy page and definitionWeb Proxy (Privoxy)A web proxy acts as a filter for incoming and outgoing web traffic. Thus, you can instruct any computer in your network to pass internet traffic through the proxy to remove unwanted ads and tracking mechanisms. Privoxy is a software for security, privacy, and accurate control over the web. It provides a much more powerful web proxy (and anonymity on the web) than what your browser can offer. Privoxy "is a proxy that is primarily focused on privacy enhancement, ad and junk elimination and freeing the user from restrictions placed on his activities" (source: Privoxy FAQ). ScreencastWatch the screencast on how to setup and use Privoxy in FreedomBox. Setting upIn Plinth install Web Proxy (Privoxy)Privoxy InstallationAdapt your browser proxy settings to your FreedomBox hostname (or IP address) with port 8118. Please note that Privoxy can only proxy HTTP and HTTPS traffic. It will not work with FTP or other protocols. Privoxy Browser SettingsGo to page or . If Privoxy is installed properly, you will be able to configure it in detail; if not you will see an error message. If you are using a laptop that occasionally has to connect through other routers than yours with the FreedomBox and Privoxy, you may want to install a proxy switch add-on that allows you to easily turn the proxy on or off. Advanced UsersThe default installation should provide a reasonable starting point for most. There will undoubtedly be occasions where you will want to adjust the configuration, that can be dealt with as the need arises. While using Privoxy, you can see its configuration details and documentation at or . To enable changing these configurations, you first have to change the value of enable-edit-actions in /etc/privoxy/config to 1. Before doing so, read carefully the manual, especially: Access to the editor can not be controlled separately by "ACLs" or HTTP authentication, so that everybody who can access Privoxy can modify its configuration for all users. This option is not recommended for environments with untrusted users. Note that malicious client side code (e.g Java) is also capable of using the actions editor and you shouldn't enable this options unless you understand the consequences and are sure your browser is configured correctly.Now you find an EDIT button on the configuration screen in http://config.privoxy.org/. The Quickstart is a good starting point to read on how to define own blocking and filtering rules. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Quassel.raw.xml b/doc/manual/en/Quassel.raw.xml
index c44381098..b2a4cc1e2 100644
--- a/doc/manual/en/Quassel.raw.xml
+++ b/doc/manual/en/Quassel.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Quassel82020-05-03 18:48:31JamesValleroyupdate quasseldroid links72019-05-10 23:05:32JamesValleroyuse standard text for port forwarding62019-02-27 21:34:38JosephNuthalapatiGrammar corrections and clarification about port forwarding52018-10-04 02:01:15SunilMohanAdapaAdd screenshots to the Quassel Client section42018-10-04 01:26:35SunilMohanAdapaRefactor information on how to connect to core using desktop client32018-03-11 03:00:04JosephNuthalapatiFix oversized image22016-08-18 17:30:28Drahtseilwording, screen-shots12016-08-17 20:09:38Drahtseilpage creation; not sure about the configuration of quassel-client (too long ago); screenshots to followIRC Client (Quassel)Quassel is an IRC application that is split into two parts, a "core" and a "client". This allows the core to remain connected to IRC servers, and to continue receiving messages, even when the client is disconnected. FreedomBox can run the Quassel core service keeping you always online and one or more Quassel clients from a desktop or a mobile device can be used to connect and disconnect from it. Why run Quassel?Many discussions about FreedomBox are being done on the IRC-Channel irc://irc.debian.org/freedombox. If your FreedomBox is running Quassel, it will collect all discussions while you are away, such as responses to your questions. Remember, the FreedomBox project is a worldwide project with people from nearly every time zone. You use your client to connect to the Quassel core to read and respond whenever you have time and are available. How to setup Quassel?Within Plinth select Applicationsgo to IRC Client (Quassel) and install the application and make sure it is enabled Quassel Installationnow your Quassel core is running Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Quassel: TCP 4242 Example configuration in router: Quassel_PortForwarding.pngClientsClients to connect to Quassel from your desktop and mobile devices are available. DesktopIn a Debian system, you can e.g. use quassel-client. The following steps describe how to connect Quassel Client with Quassel Core running on a FreedomBox. The first time you do this connection, Quassel Core will be initialized too. Launch Quassel Client. You will be greeted with a wizard to Connect to Core. Connect to CoreClick the Add button to launch Add Core Account dialog. Add Core AccountFill any value in the Account Name field. Fill proper DNS hostname of your FreedomBox in Hostname filed. Port field must have the value 4242. Provide the username and password of the account you wish to create to connect to the Quassel Core in the User and Password fields. Choose Remember if don't wish to be prompted for a password every time you launch Quassel client. After pressing OK in the Add Core Account dialog, you should see the core account in the Connect to Core dialog. Connect to CoreSelect the newly created core account and select OK to connect to it. If this is the first time you are connecting to this core. You will see an Untrusted Security Certificate warning and need to accept the server certificate. Untrusted Security CertificateSelect Continue. Then you will be asked if you wish to accept the certificate permanently. Select Forever. Untrusted Security CertificateIf this Quassel Core has not been connected to before, you will then see a Core Configuration Wizard. Select Next. Core Configuration WizardIn the Create Admin User page, enter the username and password you have used earlier to create the core connection. Select Remember password to remember this password for future sessions. Click Next. Create Admin User PageIn the Select Storage Backend page, select SQLite and click Commit. Select Storage BackendThe core configuration is then complete and you will see a Quassel IRC wizard to configure your IRC connections. Click Next. Welcome WizardIn Setup Identity page next, provide a name and multiple nicknames. This is how you present yourself to other users on IRC. It is not necessary to give your real world name. Multiple nicknames are useful as fallback nicknames when the first nickname can't be used for some reason. After providing the information click Next. Setup IdentityIn Setup Network Connection page next, provide a network name of your choice. Next provide a list of servers to which Quassel Core should connect to in order to join this IRC network (such as irc.debian.org:6667). Setup Network ConnectionSelect the server in the servers list and click Edit. In the Server Info dialog, set the port 6697 (consult your network's documentation for actual list of servers and their secure ports) and click Use SSL. Click OK. This is to ensure that communication between your FreedomBox and the IRC network server is encrypted. Server InfoServer Info SSLBack in the Setup Network Connection dialog, provide a list of IRC channels (such as #freedombox) to join upon connecting to the network. Click Save & Connect. Setup Network ConnectionYou should connect to the network and see the list of channels you have joined on the All Chats pane on the left of the Quassel Client main window. Quassel Main WindowSelect a channel and start seeing messages from others in the channel and send your own messages. AndroidFor Android devices you may use e.g. Quasseldroid from F-Droidenter core, username etc. as above Quasseldroid.pngBy the way, the German verb quasseln means talking a lot, to jabber. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Quassel102020-05-11 23:23:12fioddorExample screenshot in english (previous in german)92020-05-11 23:16:16fioddorPlinth renamed to FreedomBox's web interface,as in the rest of user documentation82020-05-03 18:48:31JamesValleroyupdate quasseldroid links72019-05-10 23:05:32JamesValleroyuse standard text for port forwarding62019-02-27 21:34:38JosephNuthalapatiGrammar corrections and clarification about port forwarding52018-10-04 02:01:15SunilMohanAdapaAdd screenshots to the Quassel Client section42018-10-04 01:26:35SunilMohanAdapaRefactor information on how to connect to core using desktop client32018-03-11 03:00:04JosephNuthalapatiFix oversized image22016-08-18 17:30:28Drahtseilwording, screen-shots12016-08-17 20:09:38Drahtseilpage creation; not sure about the configuration of quassel-client (too long ago); screenshots to followIRC Client (Quassel)Quassel is an IRC application that is split into two parts, a "core" and a "client". This allows the core to remain connected to IRC servers, and to continue receiving messages, even when the client is disconnected. FreedomBox can run the Quassel core service keeping you always online and one or more Quassel clients from a desktop or a mobile device can be used to connect and disconnect from it. Why run Quassel?Many discussions about FreedomBox are being done on the IRC-Channel irc://irc.debian.org/freedombox. If your FreedomBox is running Quassel, it will collect all discussions while you are away, such as responses to your questions. Remember, the FreedomBox project is a worldwide project with people from nearly every time zone. You use your client to connect to the Quassel core to read and respond whenever you have time and are available. How to setup Quassel?Within FreedomBox's web interface select Applicationsgo to IRC Client (Quassel) and install the application and make sure it is enabled Quassel Installationnow your Quassel core is running Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Quassel: TCP 4242 Example configuration in router: Quassel_PortForwarding_en_v01.pngClientsClients to connect to Quassel from your desktop and mobile devices are available. DesktopIn a Debian system, you can e.g. use quassel-client. The following steps describe how to connect Quassel Client with Quassel Core running on a FreedomBox. The first time you do this connection, Quassel Core will be initialized too. Launch Quassel Client. You will be greeted with a wizard to Connect to Core. Connect to CoreClick the Add button to launch Add Core Account dialog. Add Core AccountFill any value in the Account Name field. Fill proper DNS hostname of your FreedomBox in Hostname filed. Port field must have the value 4242. Provide the username and password of the account you wish to create to connect to the Quassel Core in the User and Password fields. Choose Remember if don't wish to be prompted for a password every time you launch Quassel client. After pressing OK in the Add Core Account dialog, you should see the core account in the Connect to Core dialog. Connect to CoreSelect the newly created core account and select OK to connect to it. If this is the first time you are connecting to this core. You will see an Untrusted Security Certificate warning and need to accept the server certificate. Untrusted Security CertificateSelect Continue. Then you will be asked if you wish to accept the certificate permanently. Select Forever. Untrusted Security CertificateIf this Quassel Core has not been connected to before, you will then see a Core Configuration Wizard. Select Next. Core Configuration WizardIn the Create Admin User page, enter the username and password you have used earlier to create the core connection. Select Remember password to remember this password for future sessions. Click Next. Create Admin User PageIn the Select Storage Backend page, select SQLite and click Commit. Select Storage BackendThe core configuration is then complete and you will see a Quassel IRC wizard to configure your IRC connections. Click Next. Welcome WizardIn Setup Identity page next, provide a name and multiple nicknames. This is how you present yourself to other users on IRC. It is not necessary to give your real world name. Multiple nicknames are useful as fallback nicknames when the first nickname can't be used for some reason. After providing the information click Next. Setup IdentityIn Setup Network Connection page next, provide a network name of your choice. Next provide a list of servers to which Quassel Core should connect to in order to join this IRC network (such as irc.debian.org:6667). Setup Network ConnectionSelect the server in the servers list and click Edit. In the Server Info dialog, set the port 6697 (consult your network's documentation for actual list of servers and their secure ports) and click Use SSL. Click OK. This is to ensure that communication between your FreedomBox and the IRC network server is encrypted. Server InfoServer Info SSLBack in the Setup Network Connection dialog, provide a list of IRC channels (such as #freedombox) to join upon connecting to the network. Click Save & Connect. Setup Network ConnectionYou should connect to the network and see the list of channels you have joined on the All Chats pane on the left of the Quassel Client main window. Quassel Main WindowSelect a channel and start seeing messages from others in the channel and send your own messages. AndroidFor Android devices you may use e.g. Quasseldroid from F-Droidenter core, username etc. as above Quasseldroid.pngBy the way, the German verb quasseln means talking a lot, to jabber. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Radicale.raw.xml b/doc/manual/en/Radicale.raw.xml
index 99ebac80c..b20d08c61 100644
--- a/doc/manual/en/Radicale.raw.xml
+++ b/doc/manual/en/Radicale.raw.xml
@@ -1,4 +1,4 @@
-FreedomBox/Manual/Radicale522020-05-03 18:43:27JamesValleroyupdate links to supported clients in radicale docs512019-08-11 20:39:37SunilMohanAdapaMinro fixes to workaround for bug502019-08-11 20:32:14SunilMohanAdapaAdd information about bug in radicale492019-05-22 20:58:26David JonesAdded instructions for syncronizing calendars over Tor in Thunderbird.482019-04-04 15:49:32JosephNuthalapatiMention a gotcha about a trailing slash in radicale URL472019-03-01 11:29:01JamesValleroyadd screenshot of web interface462019-03-01 04:01:20JamesValleroyadd instructions on using web interface452019-03-01 03:50:42JamesValleroyupdate setup instructions442019-03-01 03:48:19JamesValleroyrename Plinth -> FreedomBox Service (Plinth)432019-02-27 00:07:37SunilMohanAdapaUpdate incorrect reference to collections-root422019-02-26 20:24:11SunilMohanAdapaMinor update412019-02-26 20:20:18SunilMohanAdapaFix instructions for radicale 2.x manual migration402019-02-21 18:48:01SunilMohanAdapaRemove 'not tested' notice392019-02-21 03:38:31SunilMohanAdapaAdd information about radicale 2.x migration382019-02-10 23:10:19JamesValleroyonly need domain name for DAVx5372019-02-10 23:09:14JamesValleroyrename DAVdroid -> DAVx5362019-02-10 22:59:07JamesValleroyradicale is now in testing352018-09-29 11:28:56JamesValleroyUse calendar-name in CalDAV url342018-07-10 18:04:49BartNotelaers332018-06-17 16:36:11JosephNuthalapatiAdd a missing instruction on how to synchronize using DAVdroid322018-06-01 10:48:04JosephNuthalapatiUpdate DAVdroid account setup with screenshots312018-01-03 08:54:14JosephNuthalapatiUpdate broken link - radicale clients302017-08-06 23:06:11JohannesKeyserupdated dead link to radicale client page, and added warning about misleading URL info292016-12-31 02:28:01JamesValleroystyle changes282016-09-09 15:36:28SunilMohanAdapaMinor indentation fix with screenshot272016-09-09 14:43:07SunilMohanAdapaMinor fix to adjust screenshot262016-09-01 19:11:38Drahtseiladapted title to Plinth wording252016-08-31 17:26:23Drahtseilupdated screenshot242016-08-31 17:24:42DrahtseilAccess rights232016-08-01 16:32:28Drahtseil222016-08-01 16:28:29Drahtseilscreenshots212016-08-01 16:18:30DrahtseilEvolution tutorial to use Calendar instead of Contacts (just happen to have that screenshot)202016-07-31 18:21:39DrahtseilAndroid, advanced user, screenshots still to follow192016-07-31 16:54:46Drahtseil182016-05-18 12:40:51SunilMohanAdapaReduce item nesting to < 4 due to problems in generating FreedomBox Manual172016-04-27 03:35:17StacyCockrumformatting162016-04-27 03:24:18StacyCockrumEditing and added instructions for Evolution Calendar.152016-04-26 06:11:34PhilippeBaretEditing142016-04-25 11:43:17StacyCockrum132016-04-25 11:36:30StacyCockrumI'm not sure if this is the right place to put this kind of information. I thought it would be helpful for a person to know some specifics around the settings. Pls advise if it should go somewhere e122016-04-16 01:38:12PhilippeBaretAdded Why Radical app content112016-04-16 01:36:07PhilippeBaretCorrection102016-04-15 14:58:18StacyCockrum2nd bullet under "How to setup...?" Is it true that a new calendar/address book is created for each client or perhaps the clients need to be configured to access the calendar/address books?92016-04-15 14:53:50StacyCockrumStruggled with the last sentence of the first bullet under "How to setup Radicale?". When the Radicale server is launched does CalDAV become a function of the server or is a CalDAV server?82016-04-11 09:04:25PhilippeBaretCorrection72016-04-11 09:02:38PhilippeBaretCorrection proper terms: CalDAV and CardDAV62016-04-11 09:01:11PhilippeBaretAdded Why running Radicale section52016-04-11 08:53:27PhilippeBaretCorrection42016-04-11 08:48:16PhilippeBaretAdded how to setup Radical server and clients in FreedomBox Manual32016-04-10 07:12:39PhilippeBaretAdded manual link22016-04-10 07:09:27PhilippeBaretAdded Radicale definition on FreedomBox manual12016-04-10 06:40:28PhilippeBaretAdded first content to Radicale manual pageCalendar and Addressbook (Radicale)With Radicale, you can synchronize your personal calendars, ToDo lists, and addressbooks with your various computers, tablets, and smartphones, and share them with friends, without letting third parties know your personal schedule or contacts. Why should I run Radicale?Using Radicale, you can get rid of centralized services like Google Calendar or Apple Calendar (iCloud) data mining your events and social connections. How to setup Radicale?First, the Radicale server needs to be activated on your box. Within FreedomBox Service (Plinth) select Appsgo to Radicale (Calendar and Addressbook) and install the application. After the installation is complete, make sure the application is marked "enabled" in the FreedomBox interface. Enabling the application launches the Radicale CalDAV/CardDAV server. define the access rights: Only the owner of a calendar/addressbook can view or make changes Any user can view any calendar/addressbook, but only the owner can make changes Any user can view or make changes to any calendar/addressbook Note, that only users with a FreedomBox login can access Radicale. Radicale-Plinth.pngIf you want to share a calendar with only some users, the simplest approach is to create an additional user-name for these users and to share that user-name and password with them. Radicale provides a basic web interface, which only supports creating new calendars and addressbooks. To add events or contacts, an external supported client application is needed. radicale_web.pngCreating addressbook/calendar using the web interface Visit https://IP-address-or-domain-for-your-server/radicale/Log in with your FreedomBox account Select "Create new addressbook or calendar" Provide a title and select the type Optionally, provide a description or select a color Click "Create" The page will show the URL for your newly created addressbook or calendar Now open your client application to create new calendar and address books that will use your FreedomBox and Radicale server. The Radicale website provides an overview of supported clients, but do not use the URLs described there; FreedomBox uses another setup, follow this manual. Below are the steps for two examples: Example of setup with Evolution client: Calendar Create a new calendar For "Type," select "CalDAV" When "CalDAV" is selected, additional options will appear in the dialogue window. URL: https://IP-address-or-domain-for-your-server/radicale/user/calendar-name.ics/. Items in italics need to be changed to match your settings. note the trailing / in the path, it is important. Enable "Use a secure connection." Name the calendar Radicale-Evolution-Docu.pngTODO/Tasks list: Adding a TODO/Tasks list is basically the same as a calendar. Contacts Follow the same steps described above and replace CalDAV with WebDAV. The extension of the address book will be .vcf. Synchronizing over TorIn Plinth, setting up a calendar with Radicale over Tor is the same as over the clear net. Here is a short summary: When logged in to Plinth over Tor, click on Radicale, and at the prompt provide your FreedomBox user name and password. In the Radicale web interface, log in using your FreedomBox user name and password. Click on "Create new address book or calendar", provide a title, select a type, and click "Create". Save the URL, e.g., https://ONION-ADDRESS-FOR-YOUR-SERVER.onion/radicale/USERNAME/CALENDAR-CODE/. Items in italics need to be changed to match your settings. These instructions are for Thunderbird/Lightning. Note that you will need to be connected to Tor with the Tor Browser Bundle. Open Thunderbird, install the Torbirdy add-on, and restart Thunderbird. (This may not be necessary.) In the Lightning interface, under Calendar/Home in the left panel right click with the mouse and select "New calendar". Select the location of your calendar as "On the Network". Select CalDAV and for the location copy the URL, e.g., https://ONION-ADDRESS-FOR-YOUR-SERVER.onion/radicale/USERNAME/CALENDAR-CODE/. Items in italics need to be changed to match your settings. Provide a name, etc. Click "Next". Your calendar is now syncing with your FreedomBox over Tor. If you have not generated a certificate for your FreedomBox with "Let's Encrypt", you may need to select "Confirm Security Exception" when prompted. Synchronizing with your Android phoneThere are various Apps that allow integration with the Radicale server. This example uses DAVx5, which is available e.g. on F-Droid. If you intend to use ToDo-Lists as well, the compatible app OpenTasks has to be installed first. Follow these steps for setting up your account with the Radicale server running on your FreedomBox. Install DAVx5 Create a new account on DAVx5 by clicking on the floating + button. Select the second option as shown in the first figure below and enter the base url as (don't miss the / at the end). DAVx5 will be able to discover both CalDAV and WebDAV accounts for the user. Follow this video from DAVx5 FAQ to learn how to migrate your existing contacts to Radicale. Synchronizing contactsClick on the hamburger menus of CalDAV and CardDAV and select either "Refresh ..." in case of existing accounts or "Create ..." in case of new accounts (see the second screenshot below). Check the checkboxes for the address books and calendars you want to synchronize and click on the sync button in the header. (see the third screenshot below) DAVx5 account setupDAVx5 refreshDAVx5 account syncAdvanced UsersSharing resourcesAbove was shown an easy way to create a resource for a group of people by creating a dedicated account for all. Here will be described an alternative method where two users User1 and User2 are granted access to a calendar. This requires SSH-access to the FreedomBox. create a file /etc/radicale/rightsFreedomBox/Manual/Radicale542020-05-15 11:11:34JamesValleroyrename plinth -> freedombox532020-05-15 11:10:13JamesValleroysuppress wikiword links522020-05-03 18:43:27JamesValleroyupdate links to supported clients in radicale docs512019-08-11 20:39:37SunilMohanAdapaMinro fixes to workaround for bug502019-08-11 20:32:14SunilMohanAdapaAdd information about bug in radicale492019-05-22 20:58:26David JonesAdded instructions for syncronizing calendars over Tor in Thunderbird.482019-04-04 15:49:32JosephNuthalapatiMention a gotcha about a trailing slash in radicale URL472019-03-01 11:29:01JamesValleroyadd screenshot of web interface462019-03-01 04:01:20JamesValleroyadd instructions on using web interface452019-03-01 03:50:42JamesValleroyupdate setup instructions442019-03-01 03:48:19JamesValleroyrename Plinth -> FreedomBox Service (Plinth)432019-02-27 00:07:37SunilMohanAdapaUpdate incorrect reference to collections-root422019-02-26 20:24:11SunilMohanAdapaMinor update412019-02-26 20:20:18SunilMohanAdapaFix instructions for radicale 2.x manual migration402019-02-21 18:48:01SunilMohanAdapaRemove 'not tested' notice392019-02-21 03:38:31SunilMohanAdapaAdd information about radicale 2.x migration382019-02-10 23:10:19JamesValleroyonly need domain name for DAVx5372019-02-10 23:09:14JamesValleroyrename DAVdroid -> DAVx5362019-02-10 22:59:07JamesValleroyradicale is now in testing352018-09-29 11:28:56JamesValleroyUse calendar-name in CalDAV url342018-07-10 18:04:49BartNotelaers332018-06-17 16:36:11JosephNuthalapatiAdd a missing instruction on how to synchronize using DAVdroid322018-06-01 10:48:04JosephNuthalapatiUpdate DAVdroid account setup with screenshots312018-01-03 08:54:14JosephNuthalapatiUpdate broken link - radicale clients302017-08-06 23:06:11JohannesKeyserupdated dead link to radicale client page, and added warning about misleading URL info292016-12-31 02:28:01JamesValleroystyle changes282016-09-09 15:36:28SunilMohanAdapaMinor indentation fix with screenshot272016-09-09 14:43:07SunilMohanAdapaMinor fix to adjust screenshot262016-09-01 19:11:38Drahtseiladapted title to Plinth wording252016-08-31 17:26:23Drahtseilupdated screenshot242016-08-31 17:24:42DrahtseilAccess rights232016-08-01 16:32:28Drahtseil222016-08-01 16:28:29Drahtseilscreenshots212016-08-01 16:18:30DrahtseilEvolution tutorial to use Calendar instead of Contacts (just happen to have that screenshot)202016-07-31 18:21:39DrahtseilAndroid, advanced user, screenshots still to follow192016-07-31 16:54:46Drahtseil182016-05-18 12:40:51SunilMohanAdapaReduce item nesting to < 4 due to problems in generating FreedomBox Manual172016-04-27 03:35:17StacyCockrumformatting162016-04-27 03:24:18StacyCockrumEditing and added instructions for Evolution Calendar.152016-04-26 06:11:34PhilippeBaretEditing142016-04-25 11:43:17StacyCockrum132016-04-25 11:36:30StacyCockrumI'm not sure if this is the right place to put this kind of information. I thought it would be helpful for a person to know some specifics around the settings. Pls advise if it should go somewhere e122016-04-16 01:38:12PhilippeBaretAdded Why Radical app content112016-04-16 01:36:07PhilippeBaretCorrection102016-04-15 14:58:18StacyCockrum2nd bullet under "How to setup...?" Is it true that a new calendar/address book is created for each client or perhaps the clients need to be configured to access the calendar/address books?92016-04-15 14:53:50StacyCockrumStruggled with the last sentence of the first bullet under "How to setup Radicale?". When the Radicale server is launched does CalDAV become a function of the server or is a CalDAV server?82016-04-11 09:04:25PhilippeBaretCorrection72016-04-11 09:02:38PhilippeBaretCorrection proper terms: CalDAV and CardDAV62016-04-11 09:01:11PhilippeBaretAdded Why running Radicale section52016-04-11 08:53:27PhilippeBaretCorrection42016-04-11 08:48:16PhilippeBaretAdded how to setup Radical server and clients in FreedomBox Manual32016-04-10 07:12:39PhilippeBaretAdded manual link22016-04-10 07:09:27PhilippeBaretAdded Radicale definition on FreedomBox manual12016-04-10 06:40:28PhilippeBaretAdded first content to Radicale manual pageCalendar and Addressbook (Radicale)With Radicale, you can synchronize your personal calendars, ToDo lists, and addressbooks with your various computers, tablets, and smartphones, and share them with friends, without letting third parties know your personal schedule or contacts. Why should I run Radicale?Using Radicale, you can get rid of centralized services like Google Calendar or Apple Calendar (iCloud) data mining your events and social connections. How to setup Radicale?First, the Radicale server needs to be activated on your box. Within FreedomBox Service (Plinth) select Appsgo to Radicale (Calendar and Addressbook) and install the application. After the installation is complete, make sure the application is marked "enabled" in the FreedomBox interface. Enabling the application launches the Radicale CalDAV/CardDAV server. define the access rights: Only the owner of a calendar/addressbook can view or make changes Any user can view any calendar/addressbook, but only the owner can make changes Any user can view or make changes to any calendar/addressbook Note, that only users with a FreedomBox login can access Radicale. Radicale-Plinth.pngIf you want to share a calendar with only some users, the simplest approach is to create an additional user-name for these users and to share that user-name and password with them. Radicale provides a basic web interface, which only supports creating new calendars and addressbooks. To add events or contacts, an external supported client application is needed. radicale_web.pngCreating addressbook/calendar using the web interface Visit https://IP-address-or-domain-for-your-server/radicale/Log in with your FreedomBox account Select "Create new addressbook or calendar" Provide a title and select the type Optionally, provide a description or select a color Click "Create" The page will show the URL for your newly created addressbook or calendar Now open your client application to create new calendar and address books that will use your FreedomBox and Radicale server. The Radicale website provides an overview of supported clients, but do not use the URLs described there; FreedomBox uses another setup, follow this manual. Below are the steps for two examples: Example of setup with Evolution client: Calendar Create a new calendar For "Type," select "CalDAV" When "CalDAV" is selected, additional options will appear in the dialogue window. URL: https://IP-address-or-domain-for-your-server/radicale/user/calendar-name.ics/. Items in italics need to be changed to match your settings. note the trailing / in the path, it is important. Enable "Use a secure connection." Name the calendar Radicale-Evolution-Docu.pngTODO/Tasks list: Adding a TODO/Tasks list is basically the same as a calendar. Contacts Follow the same steps described above and replace CalDAV with WebDAV. The extension of the address book will be .vcf. Synchronizing over TorIn FreedomBox, setting up a calendar with Radicale over Tor is the same as over the clear net. Here is a short summary: When logged in to FreedomBox interface over Tor, click on Radicale, and at the prompt provide your FreedomBox user name and password. In the Radicale web interface, log in using your FreedomBox user name and password. Click on "Create new address book or calendar", provide a title, select a type, and click "Create". Save the URL, e.g., https://ONION-ADDRESS-FOR-YOUR-SERVER.onion/radicale/USERNAME/CALENDAR-CODE/. Items in italics need to be changed to match your settings. These instructions are for Thunderbird/Lightning. Note that you will need to be connected to Tor with the Tor Browser Bundle. Open Thunderbird, install the Torbirdy add-on, and restart Thunderbird. (This may not be necessary.) In the Lightning interface, under Calendar/Home in the left panel right click with the mouse and select "New calendar". Select the location of your calendar as "On the Network". Select CalDAV and for the location copy the URL, e.g., https://ONION-ADDRESS-FOR-YOUR-SERVER.onion/radicale/USERNAME/CALENDAR-CODE/. Items in italics need to be changed to match your settings. Provide a name, etc. Click "Next". Your calendar is now syncing with your FreedomBox over Tor. If you have not generated a certificate for your FreedomBox with "Let's Encrypt", you may need to select "Confirm Security Exception" when prompted. Synchronizing with your Android phoneThere are various Apps that allow integration with the Radicale server. This example uses DAVx5, which is available e.g. on F-Droid. If you intend to use ToDo-Lists as well, the compatible app OpenTasks has to be installed first. Follow these steps for setting up your account with the Radicale server running on your FreedomBox. Install DAVx5 Create a new account on DAVx5 by clicking on the floating + button. Select the second option as shown in the first figure below and enter the base url as (don't miss the / at the end). DAVx5 will be able to discover both CalDAV and WebDAV accounts for the user. Follow this video from DAVx5 FAQ to learn how to migrate your existing contacts to Radicale. Synchronizing contactsClick on the hamburger menus of CalDAV and CardDAV and select either "Refresh ..." in case of existing accounts or "Create ..." in case of new accounts (see the second screenshot below). Check the checkboxes for the address books and calendars you want to synchronize and click on the sync button in the header. (see the third screenshot below) DAVx5 account setupDAVx5 refreshDAVx5 account syncAdvanced UsersSharing resourcesAbove was shown an easy way to create a resource for a group of people by creating a dedicated account for all. Here will be described an alternative method where two users User1 and User2 are granted access to a calendar. This requires SSH-access to the FreedomBox. create a file /etc/radicale/rightsNotes: python-radicale is an old package from radicale 1.x version that is still available in testing. This is a hack to use the --export-storage feature that is responsible for data migration. This feature is not available in radicale 2.x unfortunately. Files ending with .dpkg-dist will exist only if you have chosen 'Keep your currently-installed version' when prompted for configuration file override during radicale 2.x upgrade. The above process will overwrite the old configuration with new fresh configuration. No changes are necessary to the two configuration files unless you have changed the setting for sharing calendars. Note that during the migration, your data is safe in /var/lib/radicale/collections directory. New data will be created and used in /var/lib/radicale/collections/collections-root/ directory. The tar command takes a backup your configuration and data in /root/radicale_backup.tgz in case you do something goes wrong and you want to undo the changes. Troubleshooting1. If you are using FreedomBox Pioneer Edition or installing FreedomBox on Debian Buster, then radicale may not be usable immediately after installation. This is due to a bug which has been fixed later. To overcome the problem, upgrade FreedomBox by clicking on 'Manual Update' from 'Updates' app. Otherwise, simply wait a day or two and let FreedomBox upgrade itself. After that install radicale. If radicale is already installed, disable and re-enable it after the update is completed. This will fix the problem and get radicale working properly. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+(After FreedomBox 19.1 is available, goto FreedomBox web interface and set your preference for calendar sharing again, if it is not the default option, as it will have been lost.)]]>Notes: python-radicale is an old package from radicale 1.x version that is still available in testing. This is a hack to use the --export-storage feature that is responsible for data migration. This feature is not available in radicale 2.x unfortunately. Files ending with .dpkg-dist will exist only if you have chosen 'Keep your currently-installed version' when prompted for configuration file override during radicale 2.x upgrade. The above process will overwrite the old configuration with new fresh configuration. No changes are necessary to the two configuration files unless you have changed the setting for sharing calendars. Note that during the migration, your data is safe in /var/lib/radicale/collections directory. New data will be created and used in /var/lib/radicale/collections/collections-root/ directory. The tar command takes a backup your configuration and data in /root/radicale_backup.tgz in case you do something goes wrong and you want to undo the changes. Troubleshooting1. If you are using FreedomBox Pioneer Edition or installing FreedomBox on Debian Buster, then radicale may not be usable immediately after installation. This is due to a bug which has been fixed later. To overcome the problem, upgrade FreedomBox by clicking on 'Manual Update' from 'Updates' app. Otherwise, simply wait a day or two and let FreedomBox upgrade itself. After that install radicale. If radicale is already installed, disable and re-enable it after the update is completed. This will fix the problem and get radicale working properly. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Repro.raw.xml b/doc/manual/en/Repro.raw.xml
index 3ed8f6284..488a9a373 100644
--- a/doc/manual/en/Repro.raw.xml
+++ b/doc/manual/en/Repro.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Repro82019-02-26 23:26:49JamesValleroyremove content from manual72019-02-26 23:25:03JamesValleroyadd note about removal62017-01-02 13:43:51JamesValleroyadd port forwarding info52016-12-31 03:57:09JamesValleroyadd basic info42016-12-26 18:56:31JamesValleroyadd screenshots32016-05-27 17:24:23JamesValleroyadd footer22016-05-27 17:21:48JamesValleroyRenamed from 'FreedomBox/Manual/repro'.12016-05-15 19:03:02JamesValleroystart pageSIP Server (repro)App removedrepro has been removed from Debian 10 (Buster), and therefore is no longer available in FreedomBox. repro is a server for SIP, a standard that enables Voice-over-IP calls. A desktop or mobile SIP client is required to use repro. How to set up the SIP serverConfigure the domain at /repro/domains.html on the FreedomBox. Repro DomainsAdd users at /repro/addUser.html. Repro UsersDisable and re-enable the repro application in Plinth. Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for repro: TCP 5060 TCP 5061 UDP 5060 UDP 5061 Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Repro82019-02-26 23:26:49JamesValleroyremove content from manual72019-02-26 23:25:03JamesValleroyadd note about removal62017-01-02 13:43:51JamesValleroyadd port forwarding info52016-12-31 03:57:09JamesValleroyadd basic info42016-12-26 18:56:31JamesValleroyadd screenshots32016-05-27 17:24:23JamesValleroyadd footer22016-05-27 17:21:48JamesValleroyRenamed from 'FreedomBox/Manual/repro'.12016-05-15 19:03:02JamesValleroystart pageSIP Server (repro)App removedrepro has been removed from Debian 10 (Buster), and therefore is no longer available in FreedomBox. repro is a server for SIP, a standard that enables Voice-over-IP calls. A desktop or mobile SIP client is required to use repro. How to set up the SIP serverConfigure the domain at /repro/domains.html on the FreedomBox. Repro DomainsAdd users at /repro/addUser.html. Repro UsersDisable and re-enable the repro application in Plinth. Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for repro: TCP 5060 TCP 5061 UDP 5060 UDP 5061 Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Roundcube.raw.xml b/doc/manual/en/Roundcube.raw.xml
index 9fc5e5d9e..29a846540 100644
--- a/doc/manual/en/Roundcube.raw.xml
+++ b/doc/manual/en/Roundcube.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Roundcube82019-03-13 21:13:00SunilMohanAdapaMinor formatting.72019-03-13 21:11:10SunilMohanAdapaAdd information about how to login to Roundcube62016-12-31 03:41:20JamesValleroyadd link52016-09-01 19:12:35Drahtseiladapted title to Plinth wording42016-04-10 07:25:23PhilippeBaretAdded bottom navigation link32015-12-15 19:04:22PhilippeBaretText finishing22015-12-15 19:03:29PhilippeBaretAdded ## END_INCLUDE12015-12-15 19:02:17PhilippeBaretAdded Rouncube page with definitionEmail Client (Roundcube)What is Roundcube?Roundcube is a browser-based multilingual email client with an application-like user interface. Roundcube is using the Internet Message Access Protocol (IMAP) to access e-mail on a remote mail server. It supports MIME to send files, and provides particularly address book, folder management, message searching and spell checking. Using RoundcubeAfter Roundcube is installed, it can be accessed at https://<your freedombox>/roundcube. Enter your username and password. The username for many mail services will be the full email address such as exampleuser@example.org and not just the username like exampleuser. Enter the address of your email service's IMAP server address in the Server field. You can try providing your domain name here such as example.org for email address exampleuser@example.org and if this does not work, consult your email provider's documentation for the address of the IMAP server. Using encrypted connection to your IMAP server is strongly recommended. To do this, prepend 'imaps://' at the beginning of your IMAP server address. For example, imaps://imap.example.org. Logging into your IMAP serverUsing Gmail with RoundcubeIf you wish to use Roundcube with your Gmail account, you need to first enable support for password based login in your Google account preferences. This is because Gmail won't allow applications to login with a password by default. To do this, visit Google Account preferences and enable Less Secure Apps. After this, login to Roundcube by providing your Gmail address as Username, your password and in the server field use imaps://imap.gmail.com. Logging into GmailBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Roundcube82019-03-13 21:13:00SunilMohanAdapaMinor formatting.72019-03-13 21:11:10SunilMohanAdapaAdd information about how to login to Roundcube62016-12-31 03:41:20JamesValleroyadd link52016-09-01 19:12:35Drahtseiladapted title to Plinth wording42016-04-10 07:25:23PhilippeBaretAdded bottom navigation link32015-12-15 19:04:22PhilippeBaretText finishing22015-12-15 19:03:29PhilippeBaretAdded ## END_INCLUDE12015-12-15 19:02:17PhilippeBaretAdded Rouncube page with definitionEmail Client (Roundcube)What is Roundcube?Roundcube is a browser-based multilingual email client with an application-like user interface. Roundcube is using the Internet Message Access Protocol (IMAP) to access e-mail on a remote mail server. It supports MIME to send files, and provides particularly address book, folder management, message searching and spell checking. Using RoundcubeAfter Roundcube is installed, it can be accessed at https://<your freedombox>/roundcube. Enter your username and password. The username for many mail services will be the full email address such as exampleuser@example.org and not just the username like exampleuser. Enter the address of your email service's IMAP server address in the Server field. You can try providing your domain name here such as example.org for email address exampleuser@example.org and if this does not work, consult your email provider's documentation for the address of the IMAP server. Using encrypted connection to your IMAP server is strongly recommended. To do this, prepend 'imaps://' at the beginning of your IMAP server address. For example, imaps://imap.example.org. Logging into your IMAP serverUsing Gmail with RoundcubeIf you wish to use Roundcube with your Gmail account, you need to first enable support for password based login in your Google account preferences. This is because Gmail won't allow applications to login with a password by default. To do this, visit Google Account preferences and enable Less Secure Apps. After this, login to Roundcube by providing your Gmail address as Username, your password and in the server field use imaps://imap.gmail.com. Logging into GmailBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Samba.raw.xml b/doc/manual/en/Samba.raw.xml
index d5dd5c3c2..678325403 100644
--- a/doc/manual/en/Samba.raw.xml
+++ b/doc/manual/en/Samba.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Samba62020-04-23 13:57:36NektariosKatakis52020-04-23 13:54:36NektariosKatakis42020-04-23 13:50:01NektariosKatakis32020-02-02 07:06:36JosephNuthalapatiAndroid Samba Client needs disk path as well22020-02-01 17:15:51JosephNuthalapatiAdd comparison with Syncthing12020-02-01 17:08:21JosephNuthalapatiFirst draftFile Synchronization (Samba)Samba lets you have a shared folder over the local network that can be used from multiple computers running different operating systems. We will henceforth refer to these shared folders as "shares". You can have a personal folder shared between your own devices (Home share), a folder shared with a trusted group (Group share) or one that is shared with every device on the network (Open share). Samba lets you to treat a share as if it's a local folder on your computer. However, shares are available only on the local network. To learn more about Samba, please refer to the user documentation on their wiki. Available since version: 19.22 Using SambaAfter installation, you can choose which disks to use for sharing. Enabled shares are accessible in the file manager on your computer at location \\freedombox (on Windows) or smb://freedombox.local (on Linux and Mac). There are three types of shares you can choose from: Open share - accessible to everyone in your local network.Group share - accessible only to FreedomBox users who are in the freedombox-share group.Home share - every user in the freedombox-share group can have their own private space. On AndroidTo access Samba shares on an Android device, install "Android Samba Client" from F-Droid or Google Play. Enter smb://freedombox.local/<disk> as the share path in the app. Your shared folders should then be visible in the file manager app. Integration with other appsTransmission app on FreedomBox provides a setting to allow downloads to be saved directly to a Samba share. If you want to make available files synchronized with Syncthing through Samba you need to make sure you synchronize in a Samba share folder. Additionally in order to make Syncthing shares available in Samba Open share or Group share you will need to ensure you click "Permissions > Ignore" button under the "Advanced" tab in folder you wish in the Syncthing web UI. This will ensure that the files will be writable through Samba. Comparison with other appsSyncthingSyncthing maintains a copy of the shared folder on each device that it is shared with. Samba maintains only one copy on your FreedomBox device. Syncthing can synchronize your shared folders between devices over the Internet. Samba shares are only available on the local network. Since Syncthing is primarily a synchronization solution, it has features like conflict resolution and versioning. Samba has only copy of the file, so it doesn't need such features. For example, if two people are editing a spreadsheet stored on a Samba share, the last one to save the file wins. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Samba82020-05-18 23:18:48JamesValleroysimplify wording72020-05-12 02:24:02JosephNuthalapatiChange short description to Network File Storage62020-04-23 13:57:36NektariosKatakis52020-04-23 13:54:36NektariosKatakis42020-04-23 13:50:01NektariosKatakis32020-02-02 07:06:36JosephNuthalapatiAndroid Samba Client needs disk path as well22020-02-01 17:15:51JosephNuthalapatiAdd comparison with Syncthing12020-02-01 17:08:21JosephNuthalapatiFirst draftNetwork File Storage (Samba)Samba lets you have shared folders over the local network that can be used from multiple computers running different operating systems. We refer to these shared folders as "shares". You can have a personal folder shared between your own devices (Home share), a folder shared with a trusted group (Group share) or one that is shared with every device on the network (Open share). Samba lets you to treat a share as if it's a local folder on your computer. However, shares are available only on the local network. To learn more about Samba, please refer to the user documentation on their wiki. Available since version: 19.22 Using SambaAfter installation, you can choose which disks to use for sharing. Enabled shares are accessible in the file manager on your computer at location \\freedombox (on Windows) or smb://freedombox.local (on Linux and Mac). There are three types of shares you can choose from: Open share - accessible to everyone in your local network.Group share - accessible only to FreedomBox users who are in the freedombox-share group.Home share - every user in the freedombox-share group can have their own private space. On AndroidTo access Samba shares on an Android device, install "Android Samba Client" from F-Droid or Google Play. Enter smb://freedombox.local/<disk> as the share path in the app. Your shared folders should then be visible in the file manager app. Integration with other appsTransmission app on FreedomBox provides a setting to allow downloads to be saved directly to a Samba share. If you want to make available files synchronized with Syncthing through Samba you need to make sure you synchronize in a Samba share folder. Additionally in order to make Syncthing shares available in Samba Open share or Group share you will need to ensure you click "Permissions > Ignore" button under the "Advanced" tab in folder you wish in the Syncthing web UI. This will ensure that the files will be writable through Samba. Comparison with other appsSyncthingSyncthing maintains a copy of the shared folder on each device that it is shared with. Samba maintains only one copy on your FreedomBox device. Syncthing can synchronize your shared folders between devices over the Internet. Samba shares are only available on the local network. Since Syncthing is primarily a synchronization solution, it has features like conflict resolution and versioning. Samba has only copy of the file, so it doesn't need such features. For example, if two people are editing a spreadsheet stored on a Samba share, the last one to save the file wins. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Searx.raw.xml b/doc/manual/en/Searx.raw.xml
index 9b0e191cc..229429389 100644
--- a/doc/manual/en/Searx.raw.xml
+++ b/doc/manual/en/Searx.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Searx92020-04-12 16:07:28JamesValleroyadd links back to top level pages82019-05-22 17:08:56David JonesAdded information that SearX is accessible via Tor.72018-11-01 09:17:25JosephNuthalapatiAdd ToC62018-03-08 15:08:44JosephNuthalapatiAdd screenshot. Remove last 20 seconds from screencast to reduce size.52018-03-08 14:23:24JosephNuthalapatiAdd query param to make the video play within the browser42018-03-07 20:43:27Drahtseil32018-03-07 20:37:05DrahtseilScreencast of the installation and first steps22018-02-26 17:15:26JamesValleroyincluded in 0.2412018-02-22 12:12:50JosephNuthalapatisearx: Initial draftWeb Search (Searx)About SearxSearx is a metasearch engine. A metasearch engine aggregates the results from various search engines and presents them in a unified interface. Read more about Searx on their official website. Available since: version 0.24.0 ScreenshotSearx ScreenshotScreencastSearx installation and first steps (14 MB) Why use Searx?Personalization and Filter BubblesSearch engines have the ability to profile users and serve results most relevant to them, putting people into filter bubbles, thus distorting people's view of the world. Search engines have a financial incentive to serve interesting advertisements to their users, increasing their chances of clicking on the advertisements. A metasearch engine is a possible solution to this problem, as it aggregates results from multiple search engines thus bypassing personalization attempts by search engines. Searx avoids storing cookies from search engines as a means of preventing tracking and profiling by search engines. Advertisement filteringSearx filters out advertisements from the search results before serving the results, thus increasing relevance the of your search results and saving you from distractions. PrivacySearx uses HTTP POST instead of GET by default to send your search queries to the search engines, so that anyone snooping your traffic wouldn't be able to read your queries. The search queries wouldn't stored in browser history either. Note: Searx used from Chrome browser's omnibar would make GET requests instead of POST. Searx on FreedomBoxSearx on FreedomBox uses Single Sign On. This means that you should be logged in into your FreedomBox in the browser that you're using Searx. SearX is easily accessible via Tor. Searx can be added as a search engine to the Firefox browser's search bar. See Firefox Help on this topic. Once Searx is added, you can also set it as your default search engine. Searx also offers search results in csv, json and rss formats, which can be used with scripts to automate some tasks. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Searx92020-04-12 16:07:28JamesValleroyadd links back to top level pages82019-05-22 17:08:56David JonesAdded information that SearX is accessible via Tor.72018-11-01 09:17:25JosephNuthalapatiAdd ToC62018-03-08 15:08:44JosephNuthalapatiAdd screenshot. Remove last 20 seconds from screencast to reduce size.52018-03-08 14:23:24JosephNuthalapatiAdd query param to make the video play within the browser42018-03-07 20:43:27Drahtseil32018-03-07 20:37:05DrahtseilScreencast of the installation and first steps22018-02-26 17:15:26JamesValleroyincluded in 0.2412018-02-22 12:12:50JosephNuthalapatisearx: Initial draftWeb Search (Searx)About SearxSearx is a metasearch engine. A metasearch engine aggregates the results from various search engines and presents them in a unified interface. Read more about Searx on their official website. Available since: version 0.24.0 ScreenshotSearx ScreenshotScreencastSearx installation and first steps (14 MB) Why use Searx?Personalization and Filter BubblesSearch engines have the ability to profile users and serve results most relevant to them, putting people into filter bubbles, thus distorting people's view of the world. Search engines have a financial incentive to serve interesting advertisements to their users, increasing their chances of clicking on the advertisements. A metasearch engine is a possible solution to this problem, as it aggregates results from multiple search engines thus bypassing personalization attempts by search engines. Searx avoids storing cookies from search engines as a means of preventing tracking and profiling by search engines. Advertisement filteringSearx filters out advertisements from the search results before serving the results, thus increasing relevance the of your search results and saving you from distractions. PrivacySearx uses HTTP POST instead of GET by default to send your search queries to the search engines, so that anyone snooping your traffic wouldn't be able to read your queries. The search queries wouldn't stored in browser history either. Note: Searx used from Chrome browser's omnibar would make GET requests instead of POST. Searx on FreedomBoxSearx on FreedomBox uses Single Sign On. This means that you should be logged in into your FreedomBox in the browser that you're using Searx. SearX is easily accessible via Tor. Searx can be added as a search engine to the Firefox browser's search bar. See Firefox Help on this topic. Once Searx is added, you can also set it as your default search engine. Searx also offers search results in csv, json and rss formats, which can be used with scripts to automate some tasks. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/SecureShell.raw.xml b/doc/manual/en/SecureShell.raw.xml
index 93ecaebb3..d0e74d12c 100644
--- a/doc/manual/en/SecureShell.raw.xml
+++ b/doc/manual/en/SecureShell.raw.xml
@@ -1,4 +1,4 @@
FreedomBox/Manual/SecureShell162020-04-12 16:07:49JamesValleroyadd links back to top level pages152020-04-04 20:22:52fioddorPlinth as FreedomBox's web interface142020-04-04 20:03:23fioddorPlinth as FreedomBox's web interface132019-11-11 17:01:45JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service122019-02-26 03:46:55JamesValleroyremove wiki links112018-01-30 07:55:33SunilMohanAdapaUpdate GitHub links with Salsa102017-03-06 23:17:08JamesValleroyadd note92016-10-13 21:49:06David JonesAdded infromation about connecting to the FBX using ssh over Tor82016-10-13 21:09:31David JonesAdded information about admin account for first log in to Plinth72016-09-05 09:42:36ElViroloRemoving my previous contribution, as info already present in original version.62016-09-05 09:39:05ElVirolo52016-09-05 09:26:15ElViroloAdded "Users created via Plinth" paragraph42015-12-21 19:42:10JamesValleroyupdate default account32015-12-21 19:33:56JamesValleroyfix outline level22015-12-15 19:31:18PhilippeBaretAdded definition title12015-09-16 16:22:37SunilMohanAdapaNew manual page for secure shell accessSecure ShellWhat is Secure Shell?FreedomBox runs openssh-server server by default allowing remote logins from all interfaces. If your hardware device is connected to a monitor and a keyboard, you may login directly as well. Regular operation of FreedomBox does not require you to use the shell. However, some tasks or identifying a problem may require you to login to a shell. Setting Up A User AccountPlinth First Log In: Admin AccountWhen creating an account in FreedomBox's web interface for the first time, this user will automatically have administrator capabilities. Admin users are able to log in using ssh (see Logging In below) and have superuser privileges via sudo. Default User AccountNote: If you can access FreedomBox's web interface, then you don't need to do this. You can use the user account created in FreedomBox's web interface to connect to SSH. The pre-built FreedomBox images have a default user account called "fbx". However the password is not set for this account, so it will not be possible to log in with this account by default. There is a script included in the freedom-maker program, that will allow you to set the password for this account, if it is needed. To set a password for the "fbx" user: 1. Decompress the image file. 2. Get a copy of freedom-maker from . 3. Run sudo ./bin/passwd-in-image <image-file> fbx. 4. Copy the image file to SD card and boot device as normal. The "fbx" user also has superuser privileges via sudo. Logging InLocalTo login via SSH, to your FreedomBox: Replace fbx with the name of the user you wish to login as. freedombox should be replaced with the hostname or IP address of you FreedomBox device as found in the Quick Start process. fbx is the default user present on FreedomBox with superuser privileges. Any other user created using Plinth and belonging to the group admin will be able to login. The root account has no password set and will not be able to login. Access will be denied to all other users. fbx and users in admin group will also be able to login on the terminal directly. Other users will be denied access. If you repeatedly try to login as a user and fail, you will be blocked from logging in for some time. This is due to libpam-abl package that FreedomBox installs by default. To control this behavior consult libpam-abl documentation. SSH over TorIf in Plinth you have enabled onion services via Tor, you can access your FreedomBox using ssh over Tor. On a GNU/Linux computer, install netcat-openbsd. Edit ~/.ssh/config to enable connections over Tor. Add the following: Replace USERNAME with, e.g., an admin username (see above). Note that in some cases you may need to replace 9050 with 9150. Now to connect to the FreedomBox, open a terminal and type: Replace USERNAME with, e.g., an admin username, and ADDRESS with the onion service address for your FreedomBox. Becoming SuperuserAfter logging in, if you want to become the superuser for performing administrative activities: Make a habit of logging in as root only when you need to. If you aren't logged in as root, you can't accidentally break everything. Changing PasswordTo change the password of a user managed by FreedomBox's web interface, use the change password page. However, the fbx default user is not managed by FreedomBox's web interface and its password cannot be changed through it. To change password on the terminal, log in to your FreedomBox as the user whose password you want to change. Then, run the following command: This will ask you for your current password before giving you the opportunity to set a new one. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+ ProxyCommand nc -X 5 -x 127.0.0.1:9050 %h %p]]>Replace USERNAME with, e.g., an admin username (see above). Note that in some cases you may need to replace 9050 with 9150. Now to connect to the FreedomBox, open a terminal and type: Replace USERNAME with, e.g., an admin username, and ADDRESS with the onion service address for your FreedomBox. Becoming SuperuserAfter logging in, if you want to become the superuser for performing administrative activities: Make a habit of logging in as root only when you need to. If you aren't logged in as root, you can't accidentally break everything. Changing PasswordTo change the password of a user managed by FreedomBox's web interface, use the change password page. However, the fbx default user is not managed by FreedomBox's web interface and its password cannot be changed through it. To change password on the terminal, log in to your FreedomBox as the user whose password you want to change. Then, run the following command: This will ask you for your current password before giving you the opportunity to set a new one. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Security.raw.xml b/doc/manual/en/Security.raw.xml
index 3cb6e307f..af10c46a0 100644
--- a/doc/manual/en/Security.raw.xml
+++ b/doc/manual/en/Security.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Security32019-10-11 23:17:39SunilMohanAdapaClarify information regarding restricting console logins22016-08-31 17:40:56DrahtseilScreenshot12016-08-31 17:37:33DrahtseilcreationSecurityWhen the Restrict console logins option is enabled, only users in the admin group will be able to log in via console, secure shell (SSH) or graphical login. When this option is disabled, any user with an account on FreedomBox will be able to log in. They may be able to access some services without further authorization. This option should only be disabled if all the users of the system are well trusted. If you wish to use your FreedomBox machine also as a desktop and allow non-admin users to login via GUI, this option must be disabled. You can define the list of users belonging to admin group in the Users section. Security.pngBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Security32019-10-11 23:17:39SunilMohanAdapaClarify information regarding restricting console logins22016-08-31 17:40:56DrahtseilScreenshot12016-08-31 17:37:33DrahtseilcreationSecurityWhen the Restrict console logins option is enabled, only users in the admin group will be able to log in via console, secure shell (SSH) or graphical login. When this option is disabled, any user with an account on FreedomBox will be able to log in. They may be able to access some services without further authorization. This option should only be disabled if all the users of the system are well trusted. If you wish to use your FreedomBox machine also as a desktop and allow non-admin users to login via GUI, this option must be disabled. You can define the list of users belonging to admin group in the Users section. Security.pngBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/ServiceDiscovery.raw.xml b/doc/manual/en/ServiceDiscovery.raw.xml
index f9d772674..cae82f54e 100644
--- a/doc/manual/en/ServiceDiscovery.raw.xml
+++ b/doc/manual/en/ServiceDiscovery.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/ServiceDiscovery22017-01-02 13:17:40JamesValleroymention .local address12016-08-21 09:48:13DrahtseilCreated Service DiscoveryService DiscoveryService discovery allows other devices on the network to discover your FreedomBox and services running on it. If a client on the local network supports mDNS, it can find your FreedomBox at <hostname>.local (for example: freedombox.local). It also allows FreedomBox to discover other devices and services running on your local network. Service discovery is not essential and works only on internal networks. It may be disabled to improve security especially when connecting to a hostile local network. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/ServiceDiscovery22017-01-02 13:17:40JamesValleroymention .local address12016-08-21 09:48:13DrahtseilCreated Service DiscoveryService DiscoveryService discovery allows other devices on the network to discover your FreedomBox and services running on it. If a client on the local network supports mDNS, it can find your FreedomBox at <hostname>.local (for example: freedombox.local). It also allows FreedomBox to discover other devices and services running on your local network. Service discovery is not essential and works only on internal networks. It may be disabled to improve security especially when connecting to a hostile local network. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Shadowsocks.raw.xml b/doc/manual/en/Shadowsocks.raw.xml
index f9d10f699..d9af2e866 100644
--- a/doc/manual/en/Shadowsocks.raw.xml
+++ b/doc/manual/en/Shadowsocks.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Shadowsocks22019-05-10 22:54:33JamesValleroyremove wiki links12018-01-04 19:59:57David JonesSOCKS5 proxy (Shadowsocks)What is Shadowsocks?Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect your Internet traffic. It can be used to bypass Internet filtering and censorship. Your FreedomBox can run a Shadowsocks client which can connect to a Shadowsocks server. It will also run a SOCKS5 proxy. Local devices can connect to this proxy, and their data will be encrypted and proxied through the Shadowsocks server. Note: Shadowsocks is available in FreedomBox starting with Plinth version 0.18. Using the Shadowsocks client?The current implementation of Shadowsocks in FreedomBox only supports configuring FreedomBox as a Shadowsocks client. The current use case for Shadowsocks is as follows: Shadowsocks client (FreedomBox) is in a region where some parts of the Internet are blocked or censored. Shadowsocks server is in a different region, which doesn't have these blocks. The FreedomBox provides SOCKS proxy service on the local network for other devices to make use of its Shadowsocks connection. At a future date it will be possible to configure FreedomBox as Shadowsocks server. Configuring your FreedomBox for the Shadowsocks clientTo enable Shadowsocks, first navigate to the Socks5 Proxy (Shadowsocks) page and install it. Server: the Shadowsocks server is not the FreedomBox IP or URL; rather, it will be another server or VPS that has been configured as a Shadowsocks server. There are also some public Shadowsocks servers listed on the web, but be aware that whoever operates the server can see where requests are going, and any non-encrypted data will be visible to them. To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, browser or application to Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Shadowsocks22019-05-10 22:54:33JamesValleroyremove wiki links12018-01-04 19:59:57David JonesSOCKS5 proxy (Shadowsocks)What is Shadowsocks?Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect your Internet traffic. It can be used to bypass Internet filtering and censorship. Your FreedomBox can run a Shadowsocks client which can connect to a Shadowsocks server. It will also run a SOCKS5 proxy. Local devices can connect to this proxy, and their data will be encrypted and proxied through the Shadowsocks server. Note: Shadowsocks is available in FreedomBox starting with Plinth version 0.18. Using the Shadowsocks client?The current implementation of Shadowsocks in FreedomBox only supports configuring FreedomBox as a Shadowsocks client. The current use case for Shadowsocks is as follows: Shadowsocks client (FreedomBox) is in a region where some parts of the Internet are blocked or censored. Shadowsocks server is in a different region, which doesn't have these blocks. The FreedomBox provides SOCKS proxy service on the local network for other devices to make use of its Shadowsocks connection. At a future date it will be possible to configure FreedomBox as Shadowsocks server. Configuring your FreedomBox for the Shadowsocks clientTo enable Shadowsocks, first navigate to the Socks5 Proxy (Shadowsocks) page and install it. Server: the Shadowsocks server is not the FreedomBox IP or URL; rather, it will be another server or VPS that has been configured as a Shadowsocks server. There are also some public Shadowsocks servers listed on the web, but be aware that whoever operates the server can see where requests are going, and any non-encrypted data will be visible to them. To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, browser or application to Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Snapshots.raw.xml b/doc/manual/en/Snapshots.raw.xml
index 5ae946547..eb7cef0b1 100644
--- a/doc/manual/en/Snapshots.raw.xml
+++ b/doc/manual/en/Snapshots.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Snapshots22018-03-10 15:11:41JosephNuthalapatiFix oversized image12017-11-14 02:24:01JamesValleroynew page for snapshots moduleSnapshotsSnapshots allows you to create filesystem snapshots, and rollback the system to a previous snapshot. Note: This feature requires a Btrfs filesystem. All of the FreedomBox stable disk images use Btrfs. SnapshotsBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Snapshots22018-03-10 15:11:41JosephNuthalapatiFix oversized image12017-11-14 02:24:01JamesValleroynew page for snapshots moduleSnapshotsSnapshots allows you to create filesystem snapshots, and rollback the system to a previous snapshot. Note: This feature requires a Btrfs filesystem. All of the FreedomBox stable disk images use Btrfs. SnapshotsBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Storage.raw.xml b/doc/manual/en/Storage.raw.xml
index ae37aa0a7..daf178d0b 100644
--- a/doc/manual/en/Storage.raw.xml
+++ b/doc/manual/en/Storage.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Storage112018-12-18 00:01:12JamesValleroyfix screenshot parameter102018-12-04 06:20:20JosephNuthalapatiRestrict screenshot width to 800px92018-09-25 06:01:56JosephNuthalapatiUpdate description to match current functionality82018-09-25 05:51:15JosephNuthalapatiReplace screenshot with the latest version72018-03-05 12:17:19JosephNuthalapatiRenamed from 'FreedomBox/Manual/Disks'.62018-03-05 12:16:41JosephNuthalapatiRenaming Disks to Storage52017-04-09 13:45:57JamesValleroyupdate note about issue42017-03-31 20:16:25Drahtseilupdate screenshot with "expand partition"32017-02-10 22:33:01JamesValleroyadd warning about non-functional feature22016-08-31 17:10:11Drahtseilscreenshot12016-08-31 17:09:10DrahtseilDisks creationStorageStorage allows you to see the storage devices attached to your FreedomBox and their disk space usage. FreedomBox can automatically detect and mount removable media like USB flash drives. They are listed under the Removable Devices section along with an option to eject them. If there is some free space left after the root partition, the option to expand the root partition is also available. This is typically not shown, since expanding the root partition happens automatically when the FreedomBox starts up for the first time. Storage.pngBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Storage112018-12-18 00:01:12JamesValleroyfix screenshot parameter102018-12-04 06:20:20JosephNuthalapatiRestrict screenshot width to 800px92018-09-25 06:01:56JosephNuthalapatiUpdate description to match current functionality82018-09-25 05:51:15JosephNuthalapatiReplace screenshot with the latest version72018-03-05 12:17:19JosephNuthalapatiRenamed from 'FreedomBox/Manual/Disks'.62018-03-05 12:16:41JosephNuthalapatiRenaming Disks to Storage52017-04-09 13:45:57JamesValleroyupdate note about issue42017-03-31 20:16:25Drahtseilupdate screenshot with "expand partition"32017-02-10 22:33:01JamesValleroyadd warning about non-functional feature22016-08-31 17:10:11Drahtseilscreenshot12016-08-31 17:09:10DrahtseilDisks creationStorageStorage allows you to see the storage devices attached to your FreedomBox and their disk space usage. FreedomBox can automatically detect and mount removable media like USB flash drives. They are listed under the Removable Devices section along with an option to eject them. If there is some free space left after the root partition, the option to expand the root partition is also available. This is typically not shown, since expanding the root partition happens automatically when the FreedomBox starts up for the first time. Storage.pngBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Syncthing.raw.xml b/doc/manual/en/Syncthing.raw.xml
index 12d07c810..8ad0418a8 100644
--- a/doc/manual/en/Syncthing.raw.xml
+++ b/doc/manual/en/Syncthing.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Syncthing182019-11-11 17:00:38JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service172019-11-01 01:09:33JosephNuthalapatiMinor formatting changes162019-10-31 15:01:33JosephNuthalapatiMinor change to headings152019-10-31 14:42:33JosephNuthalapatiAdd synchronized password manager142019-10-27 05:53:05JosephNuthalapatiAdd tip to avoid using Syncthing relays132019-09-11 15:33:32fioddorCode decoration122019-06-09 11:07:46David Jones112019-06-09 11:00:48David Jonesadded information about syncthing and tor hidden service102018-03-10 04:32:57JosephNuthalapatiFix oversized image92017-10-22 14:57:58Drahtseil82017-10-22 14:57:09DrahtseilSyncthing GUI image72017-10-22 14:54:54DrahtseilSome rewording etc.62017-10-21 14:59:53DrahtseilTitel same as in Plinth GUI; standard footer; some basic restructuring before I will update the docu more in detail52017-04-04 10:39:36JosephNuthalapati42017-03-23 10:54:49JosephNuthalapatiRewrote the section on Syncthing's role in FreedomBox32017-03-23 05:12:13SunilMohanAdapaMinor formatting22017-03-23 05:11:43SunilMohanAdapaAdd note about availability of Syncthing12017-03-23 02:11:00JosephNuthalapatiCreated wiki page for SyncthingFile Synchronization (Syncthing)With Syncthing installed on your FreedomBox, you can synchronize content from other devices to your FreedomBox and vice-versa. For example, you can keep the photos taken on your mobile phone synchronized to your FreedomBox. Available since version: 0.14 Users should keep in mind that Syncthing is a peer-to-peer synchronization solution, not a client-server one. This means that the FreedomBox isn't really the server and your other devices clients. They're all devices from Syncthing's perspective. You can use Syncthing to synchronize your files between any of your devices. The advantage that FreedomBox provides is that it is a server that's always running. Suppose you want your photos on your phone to be synchronized to your laptop, if you simply sync the photos to the FreedomBox, the laptop can get them from the FreedomBox whenever it comes online the next time. You don't have to be worried about your other devices being online for synchronization. If your FreedomBox is one of the devices set up with your Syncthing shared folder, you can rest assured that your other devices will eventually get the latest files once they come online. After installation follow the instructions in the getting started of the Syncthing project. Syncthing allows individual folders to be selectively shared with other devices. Devices must be paired up before sharing by scanning QR codes or entering the device ids manually. Syncthing has a discovery service for easily identifying the other devices on the same network having Syncthing installed. In order to access to the web client of the Syncthing instance running on your FreedomBox, use the path /syncthing. This web client is currently only accessible to the users of the FreedomBox that have administrator privileges, though it might be accessible to all FreedomBox users in a future release. Syncthing web interfaceSyncthing has android apps available on the F-Droid and Google Play app stores. Cross-platform desktop apps are also available. To learn more about Syncthing, please visit their official website and documentation. Synchronizing over TorSyncthing should automatically sync with your FreedomBox even if it is only accessible as a Tor Onion Service. If you would like to proxy your Syncthing client over Tor, set the all_proxy environment variable: For more information, see the Syncthing documentation on using proxies. Avoiding Syncthing RelaysSyncthing uses dynamic connections by default to connect with other peers. This means that if you are synchronizing over the Internet, the data might have to go through public Syncthing relays to reach your devices. This doesn't take advantage of the fact that your FreedomBox has a public IP address. When adding your FreedomBox as a device in other Syncthing clients, set the address like "tcp://<my.freedombox.domain>" instead of "dynamic". This allows your Syncthing peers to directly connect to your FreedomBox avoiding the need for relays. It also allows for fast on-demand syncing if you don't want to keep Syncthing running all the time on your mobile devices. Using Syncthing with other applicationsPassword ManagerPassword managers that store their databases in files are suitable for synchronization using Syncthing. The following example describes using a free password manager called KeePassXC in combination with Syncthing to serve as a replacement for proprietary password managers that store your passwords in the cloud. KeePassXC stores usernames, passwords etc. in files have the .kdbx extension. These kdbx files can be stored in a Syncthing shared folder to keep them synchronized on multiple machines. Free software applications which can read this file format are available for both desktop and mobile. You typically have to just point the application at the .kdbx file and enter the master password to access your stored credentials. For example, the same kdbx file can be accessed by using KeePassXC on desktop and KeePassDX on Android. KeePassXC can also be used to fill credentials into login fields in the browser by installing a browser extension. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Syncthing182019-11-11 17:00:38JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service172019-11-01 01:09:33JosephNuthalapatiMinor formatting changes162019-10-31 15:01:33JosephNuthalapatiMinor change to headings152019-10-31 14:42:33JosephNuthalapatiAdd synchronized password manager142019-10-27 05:53:05JosephNuthalapatiAdd tip to avoid using Syncthing relays132019-09-11 15:33:32fioddorCode decoration122019-06-09 11:07:46David Jones112019-06-09 11:00:48David Jonesadded information about syncthing and tor hidden service102018-03-10 04:32:57JosephNuthalapatiFix oversized image92017-10-22 14:57:58Drahtseil82017-10-22 14:57:09DrahtseilSyncthing GUI image72017-10-22 14:54:54DrahtseilSome rewording etc.62017-10-21 14:59:53DrahtseilTitel same as in Plinth GUI; standard footer; some basic restructuring before I will update the docu more in detail52017-04-04 10:39:36JosephNuthalapati42017-03-23 10:54:49JosephNuthalapatiRewrote the section on Syncthing's role in FreedomBox32017-03-23 05:12:13SunilMohanAdapaMinor formatting22017-03-23 05:11:43SunilMohanAdapaAdd note about availability of Syncthing12017-03-23 02:11:00JosephNuthalapatiCreated wiki page for SyncthingFile Synchronization (Syncthing)With Syncthing installed on your FreedomBox, you can synchronize content from other devices to your FreedomBox and vice-versa. For example, you can keep the photos taken on your mobile phone synchronized to your FreedomBox. Available since version: 0.14 Users should keep in mind that Syncthing is a peer-to-peer synchronization solution, not a client-server one. This means that the FreedomBox isn't really the server and your other devices clients. They're all devices from Syncthing's perspective. You can use Syncthing to synchronize your files between any of your devices. The advantage that FreedomBox provides is that it is a server that's always running. Suppose you want your photos on your phone to be synchronized to your laptop, if you simply sync the photos to the FreedomBox, the laptop can get them from the FreedomBox whenever it comes online the next time. You don't have to be worried about your other devices being online for synchronization. If your FreedomBox is one of the devices set up with your Syncthing shared folder, you can rest assured that your other devices will eventually get the latest files once they come online. After installation follow the instructions in the getting started of the Syncthing project. Syncthing allows individual folders to be selectively shared with other devices. Devices must be paired up before sharing by scanning QR codes or entering the device ids manually. Syncthing has a discovery service for easily identifying the other devices on the same network having Syncthing installed. In order to access to the web client of the Syncthing instance running on your FreedomBox, use the path /syncthing. This web client is currently only accessible to the users of the FreedomBox that have administrator privileges, though it might be accessible to all FreedomBox users in a future release. Syncthing web interfaceSyncthing has android apps available on the F-Droid and Google Play app stores. Cross-platform desktop apps are also available. To learn more about Syncthing, please visit their official website and documentation. Synchronizing over TorSyncthing should automatically sync with your FreedomBox even if it is only accessible as a Tor Onion Service. If you would like to proxy your Syncthing client over Tor, set the all_proxy environment variable: For more information, see the Syncthing documentation on using proxies. Avoiding Syncthing RelaysSyncthing uses dynamic connections by default to connect with other peers. This means that if you are synchronizing over the Internet, the data might have to go through public Syncthing relays to reach your devices. This doesn't take advantage of the fact that your FreedomBox has a public IP address. When adding your FreedomBox as a device in other Syncthing clients, set the address like "tcp://<my.freedombox.domain>" instead of "dynamic". This allows your Syncthing peers to directly connect to your FreedomBox avoiding the need for relays. It also allows for fast on-demand syncing if you don't want to keep Syncthing running all the time on your mobile devices. Using Syncthing with other applicationsPassword ManagerPassword managers that store their databases in files are suitable for synchronization using Syncthing. The following example describes using a free password manager called KeePassXC in combination with Syncthing to serve as a replacement for proprietary password managers that store your passwords in the cloud. KeePassXC stores usernames, passwords etc. in files have the .kdbx extension. These kdbx files can be stored in a Syncthing shared folder to keep them synchronized on multiple machines. Free software applications which can read this file format are available for both desktop and mobile. You typically have to just point the application at the .kdbx file and enter the master password to access your stored credentials. For example, the same kdbx file can be accessed by using KeePassXC on desktop and KeePassDX on Android. KeePassXC can also be used to fill credentials into login fields in the browser by installing a browser extension. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/TinyTinyRSS.raw.xml b/doc/manual/en/TinyTinyRSS.raw.xml
index f549fdb81..bde3a549a 100644
--- a/doc/manual/en/TinyTinyRSS.raw.xml
+++ b/doc/manual/en/TinyTinyRSS.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/TinyTinyRSS102018-03-11 03:05:29JosephNuthalapatiFix oversized images92017-10-18 13:51:27JosephNuthalapatiRemove link to source code as this wiki seems to have banned anything that starts with git.tt82017-10-18 13:47:46JosephNuthalapatiAdd importing OPML feeds and link to source code of TT-RSS Android App72017-10-18 12:58:46JosephNuthalapatiAdd documentation for automatic detection of RSS feeds and the Unsubscribe option62017-10-18 12:37:03JosephNuthalapatiAdd screenshots for subscribing to a new RSS feed52017-10-16 12:11:52SunilMohanAdapaMinor styling42017-10-16 12:08:36SunilMohanAdapaAdd information about mobile application32016-12-31 03:49:54JamesValleroyadd screenshot22016-12-31 03:44:56JamesValleroyadd user info12016-09-04 10:18:59Drahtseilstub createdNews Feed Reader (Tiny Tiny RSS)Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to allow reading news from any location, while feeling as close to a real desktop application as possible. Any user created through FreedomBox web interface will be able to login and use this app. Each user has their own feeds, state and preferences. Using the Web InterfaceWhen enabled, Tiny Tiny RSS will be available from /tt-rss path on the web server. Any user created through Plinth will be able to login and use this app. Tiny Tiny RSSAdding a new feed1. Go to the website you want the RSS feed for and copy the RSS/Atom feed link from it. Selecting feeds2. Select "Subscribe to feed.." from the Actions dropdown. Subscribe to feed3. In the dialog box that appears, paste the URL for copied in step 1 and click the Subscribe button. Subscription dialog boxGive the application a minute to fetch the feeds after clicking Subscribe. In some websites, the RSS feeds button isn't clearly visible. In that case, you can simply paste the website URL into the Subscribe dialog (step 3) and let TT-RSS automatically detect the RSS feeds on the page. You can try this now with the homepage of WikiNewsAs you can see in the image below, TT-RSS detected and added the Atom feed of WikiNews to our list of feeds. WikiNews feed addedIf you don't want to keep this feed, right click on the feed shown in the above image, select Edit feed and click Unsubscribe in the dialog box that appears. Unsubscribe from a feedImporting your feeds from another feed readerIn your existing feed reader, find an option to Export your feeds to a file. Prefer the OPML file format if you have to choose between multiple formats. Let's say your exported feeds file is called Subscriptions.opml Click on the Actions menu at the top left corner and select Preferences. You will be taken to another page. Select the second tab called Feeds in the top header. Feeds has several sections. The second one is called OPML. Select it. OPML feeds pageTo import your Subscriptions.opml file into TT-RSS, Click Browse and select the file from your file system Click Import my OPMLAfter importing, you'll be taken to the Feeds section that's above the OPML section in the page. You can see that the feeds from your earlier feed reader are now imported into Tiny Tiny RSS. You can now start using Tiny Tiny RSS as your primary feed reader. In the next section, we will discuss setting up the mobile app, which can let you read your feeds on the go. Using the Mobile AppThe official Android app from the Tiny Tiny RSS project works with FreedomBox's Tiny Tiny RSS Server. The older TTRSS-Reader application is known not to work. The official Android app is unfortunately only available on the Google Play Store and not on F-Droid. You can still obtain the source code and build the apk file yourself. To configure, first install the application, then in the setting page, set URL as . Set your user name and password in the Login details as well as HTTP Authentication details. If your FreedomBox does not have a valid HTTPS certificate, then in settings request allowing any SSL certificate and any host. Tiny Tiny RSSTiny Tiny RSSTiny Tiny RSSTiny Tiny RSSTiny Tiny RSSBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/TinyTinyRSS102018-03-11 03:05:29JosephNuthalapatiFix oversized images92017-10-18 13:51:27JosephNuthalapatiRemove link to source code as this wiki seems to have banned anything that starts with git.tt82017-10-18 13:47:46JosephNuthalapatiAdd importing OPML feeds and link to source code of TT-RSS Android App72017-10-18 12:58:46JosephNuthalapatiAdd documentation for automatic detection of RSS feeds and the Unsubscribe option62017-10-18 12:37:03JosephNuthalapatiAdd screenshots for subscribing to a new RSS feed52017-10-16 12:11:52SunilMohanAdapaMinor styling42017-10-16 12:08:36SunilMohanAdapaAdd information about mobile application32016-12-31 03:49:54JamesValleroyadd screenshot22016-12-31 03:44:56JamesValleroyadd user info12016-09-04 10:18:59Drahtseilstub createdNews Feed Reader (Tiny Tiny RSS)Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to allow reading news from any location, while feeling as close to a real desktop application as possible. Any user created through FreedomBox web interface will be able to login and use this app. Each user has their own feeds, state and preferences. Using the Web InterfaceWhen enabled, Tiny Tiny RSS will be available from /tt-rss path on the web server. Any user created through Plinth will be able to login and use this app. Tiny Tiny RSSAdding a new feed1. Go to the website you want the RSS feed for and copy the RSS/Atom feed link from it. Selecting feeds2. Select "Subscribe to feed.." from the Actions dropdown. Subscribe to feed3. In the dialog box that appears, paste the URL for copied in step 1 and click the Subscribe button. Subscription dialog boxGive the application a minute to fetch the feeds after clicking Subscribe. In some websites, the RSS feeds button isn't clearly visible. In that case, you can simply paste the website URL into the Subscribe dialog (step 3) and let TT-RSS automatically detect the RSS feeds on the page. You can try this now with the homepage of WikiNewsAs you can see in the image below, TT-RSS detected and added the Atom feed of WikiNews to our list of feeds. WikiNews feed addedIf you don't want to keep this feed, right click on the feed shown in the above image, select Edit feed and click Unsubscribe in the dialog box that appears. Unsubscribe from a feedImporting your feeds from another feed readerIn your existing feed reader, find an option to Export your feeds to a file. Prefer the OPML file format if you have to choose between multiple formats. Let's say your exported feeds file is called Subscriptions.opml Click on the Actions menu at the top left corner and select Preferences. You will be taken to another page. Select the second tab called Feeds in the top header. Feeds has several sections. The second one is called OPML. Select it. OPML feeds pageTo import your Subscriptions.opml file into TT-RSS, Click Browse and select the file from your file system Click Import my OPMLAfter importing, you'll be taken to the Feeds section that's above the OPML section in the page. You can see that the feeds from your earlier feed reader are now imported into Tiny Tiny RSS. You can now start using Tiny Tiny RSS as your primary feed reader. In the next section, we will discuss setting up the mobile app, which can let you read your feeds on the go. Using the Mobile AppThe official Android app from the Tiny Tiny RSS project works with FreedomBox's Tiny Tiny RSS Server. The older TTRSS-Reader application is known not to work. The official Android app is unfortunately only available on the Google Play Store and not on F-Droid. You can still obtain the source code and build the apk file yourself. To configure, first install the application, then in the setting page, set URL as . Set your user name and password in the Login details as well as HTTP Authentication details. If your FreedomBox does not have a valid HTTPS certificate, then in settings request allowing any SSL certificate and any host. Tiny Tiny RSSTiny Tiny RSSTiny Tiny RSSTiny Tiny RSSTiny Tiny RSSBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Tor.raw.xml b/doc/manual/en/Tor.raw.xml
index 17845c4be..b6a4e97bf 100644
--- a/doc/manual/en/Tor.raw.xml
+++ b/doc/manual/en/Tor.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Tor232019-11-28 22:24:36SunilMohanAdapaUpdate link to Tor Relay Guide Closes freedom-maker#169, thanks to Jamie Campbell222019-11-11 16:55:49JosephNuthalapatiRename Hidden Service to Onion Service212019-10-27 06:23:30JosephNuthalapatiAdd screenshot for using Tor SOCKS proxy with Firefox202019-10-27 06:18:47JosephNuthalapatiAdd example for using Tor SOCKS proxy with Firefox192019-06-09 10:47:56David Jonesadded two more apps to list182019-05-22 17:10:34David JonesCorrected formatting; added transition sentence.172019-05-22 17:05:45David JonesStarted a list of apps accessible via Tor162018-12-30 19:13:56Drahtseilrelay requirements152018-03-19 06:27:56JosephNuthalapatiAdd section on circumventing tor censorship142018-03-19 06:25:43JosephNuthalapatiAdd section on circumventing tor censorship132017-01-07 16:00:24JamesValleroyadd image122017-01-07 15:21:27JamesValleroyplural112016-12-31 02:19:46JamesValleroymention ssh102016-12-31 02:19:03JamesValleroyadd relay info92016-12-23 18:31:29JamesValleroyundo outline level change82016-12-23 18:30:06JamesValleroymove down outline level72016-04-10 07:14:17PhilippeBaretAdded bottom navigation link62015-12-15 16:54:58PhilippeBaretText finishing52015-12-15 16:40:11PhilippeBaret42015-12-15 16:34:38PhilippeBaretAdded Tor definition32015-09-13 14:54:59SunilMohanAdapaDemote headings one level for inclusion into manual22015-09-13 14:53:54SunilMohanAdapaAdd FreedomBox category and portal12015-09-12 15:55:05JamesValleroycreate tor pageAnonymity Network (Tor)What is Tor?Tor is a network of servers operated by volunteers. It allows users of these servers to improve their privacy and security while surfing on the Internet. You and your friends are able to access to your FreedomBox via Tor network without revealing its IP address. Activating Tor application on your FreedomBox, you will be able to offer remote services (chat, wiki, file sharing, etc...) without showing your location. This application will give you a better protection than a public web server because you will be less exposed to intrusive people on the web. Using Tor to browse anonymouslyTor Browser is the recommended way to browse the web using Tor. You can download the Tor Browser from and follow the instructions on that site to install and run it. Using Tor Onion Service to access your FreedomBoxTor Onion Service provides a way to access your FreedomBox, even if it's behind a router, firewall, or carrier-grade NAT (i.e., your Internet Service Provider does not provide a public IPv4 address for your router). To enable Tor Onion Service, first navigate to the Anonymity Network (Tor) page. (If you don't see it, click on the FreedomBox logo at the top-left of the page, to go to the main Apps page.) On the Anonymity Network (Tor) page, under Configuration, check "Enable Tor Onion Service", then press the Update setup button. Tor will be reconfigured and restarted. After a while, the page will refresh and under Status, you will see a table listing the Onion Service .onion address. Copy the entire address (ending in .onion) and paste it into the Tor Browser's address field, and you should be able to access your FreedomBox. (You may see a certificate warning because FreedomBox has a self-signed certificate.) Tor Browser - PlinthCurrently only HTTP (port 80), HTTPS (port 443), and SSH (port 22) are accessible through the Tor Onion Service configured on the FreedomBox. Apps accessible via TorThe following apps can be accessed over Tor. Note that this list is not exhaustive. Calendar and Addressbook (Radicale) File Synchronization (Syncthing) Feed reader (TinyTinyRSS) Web Search (Searx) Wiki (MediaWiki) Wiki and Blog (Ikiwiki) Running a Tor relayWhen Tor is installed, it is configured by default to run as a bridge relay. The relay or bridge option can be disabled through the Tor configuration page in Plinth. At the bottom of the Tor page in Plinth, there is a list of ports used by the Tor relay. If your FreedomBox is behind a router, you will need to configure port forwarding on your router so that these ports can be reached from the public Internet. The requirements to run a relay are listed in the Tor Relay Guide. In short, it is recommended that a relay has at least 16 Mbit/s (Mbps) upload and download bandwidth available for Tor. More is better. required that a Tor relay be allowed to use a minimum of 100 GByte of outbound and of incoming traffic per month. recommended that a <40 Mbit/s non-exit relay should have at least 512 MB of RAM available; A relay faster than 40 Mbit/s should have at least 1 GB of RAM. (Advanced) Usage as a SOCKS proxyFreedomBox provides a Tor SOCKS port that other applications can connect to, in order to route their traffic over the Tor network. This port is accessible on any interfaces configured in the internal firewall zone. To configure the application, set SOCKS Host to the internal network connection's IP address, and set the SOCKS Port to 9050. Example with FirefoxYour web browser can be configured to use the Tor network for all of your browsing activity. This allows for censorship circumvention and also hides your IP address from websites during regular browsing. For anonymity, using tor browser is recommended. Configure your local FreedomBox IP address and port 9050 as a SOCKS v5 proxy in Firefox. There are extensions to allow for easily turning the proxy on and off. Configuring Firefox with Tor SOCKS proxyWith the SOCKS proxy configured, you can now access any onion URL directly from Firefox. FreedomBox itself has an onion v3 address that you can connect to over the Tor network (bookmark this for use in emergency situations). Circumventing Tor censorshipIf your ISP is trying to block Tor traffic, you can use tor bridge relays to connect to the tor network. 1. Get the bridge configuration from the Tor BridgeDBTor BridgeDB2. Add the lines to your FreedomBox Tor configuration as show below. Tor Configuration PageBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Tor232019-11-28 22:24:36SunilMohanAdapaUpdate link to Tor Relay Guide Closes freedom-maker#169, thanks to Jamie Campbell222019-11-11 16:55:49JosephNuthalapatiRename Hidden Service to Onion Service212019-10-27 06:23:30JosephNuthalapatiAdd screenshot for using Tor SOCKS proxy with Firefox202019-10-27 06:18:47JosephNuthalapatiAdd example for using Tor SOCKS proxy with Firefox192019-06-09 10:47:56David Jonesadded two more apps to list182019-05-22 17:10:34David JonesCorrected formatting; added transition sentence.172019-05-22 17:05:45David JonesStarted a list of apps accessible via Tor162018-12-30 19:13:56Drahtseilrelay requirements152018-03-19 06:27:56JosephNuthalapatiAdd section on circumventing tor censorship142018-03-19 06:25:43JosephNuthalapatiAdd section on circumventing tor censorship132017-01-07 16:00:24JamesValleroyadd image122017-01-07 15:21:27JamesValleroyplural112016-12-31 02:19:46JamesValleroymention ssh102016-12-31 02:19:03JamesValleroyadd relay info92016-12-23 18:31:29JamesValleroyundo outline level change82016-12-23 18:30:06JamesValleroymove down outline level72016-04-10 07:14:17PhilippeBaretAdded bottom navigation link62015-12-15 16:54:58PhilippeBaretText finishing52015-12-15 16:40:11PhilippeBaret42015-12-15 16:34:38PhilippeBaretAdded Tor definition32015-09-13 14:54:59SunilMohanAdapaDemote headings one level for inclusion into manual22015-09-13 14:53:54SunilMohanAdapaAdd FreedomBox category and portal12015-09-12 15:55:05JamesValleroycreate tor pageAnonymity Network (Tor)What is Tor?Tor is a network of servers operated by volunteers. It allows users of these servers to improve their privacy and security while surfing on the Internet. You and your friends are able to access to your FreedomBox via Tor network without revealing its IP address. Activating Tor application on your FreedomBox, you will be able to offer remote services (chat, wiki, file sharing, etc...) without showing your location. This application will give you a better protection than a public web server because you will be less exposed to intrusive people on the web. Using Tor to browse anonymouslyTor Browser is the recommended way to browse the web using Tor. You can download the Tor Browser from and follow the instructions on that site to install and run it. Using Tor Onion Service to access your FreedomBoxTor Onion Service provides a way to access your FreedomBox, even if it's behind a router, firewall, or carrier-grade NAT (i.e., your Internet Service Provider does not provide a public IPv4 address for your router). To enable Tor Onion Service, first navigate to the Anonymity Network (Tor) page. (If you don't see it, click on the FreedomBox logo at the top-left of the page, to go to the main Apps page.) On the Anonymity Network (Tor) page, under Configuration, check "Enable Tor Onion Service", then press the Update setup button. Tor will be reconfigured and restarted. After a while, the page will refresh and under Status, you will see a table listing the Onion Service .onion address. Copy the entire address (ending in .onion) and paste it into the Tor Browser's address field, and you should be able to access your FreedomBox. (You may see a certificate warning because FreedomBox has a self-signed certificate.) Tor Browser - PlinthCurrently only HTTP (port 80), HTTPS (port 443), and SSH (port 22) are accessible through the Tor Onion Service configured on the FreedomBox. Apps accessible via TorThe following apps can be accessed over Tor. Note that this list is not exhaustive. Calendar and Addressbook (Radicale) File Synchronization (Syncthing) Feed reader (TinyTinyRSS) Web Search (Searx) Wiki (MediaWiki) Wiki and Blog (Ikiwiki) Running a Tor relayWhen Tor is installed, it is configured by default to run as a bridge relay. The relay or bridge option can be disabled through the Tor configuration page in Plinth. At the bottom of the Tor page in Plinth, there is a list of ports used by the Tor relay. If your FreedomBox is behind a router, you will need to configure port forwarding on your router so that these ports can be reached from the public Internet. The requirements to run a relay are listed in the Tor Relay Guide. In short, it is recommended that a relay has at least 16 Mbit/s (Mbps) upload and download bandwidth available for Tor. More is better. required that a Tor relay be allowed to use a minimum of 100 GByte of outbound and of incoming traffic per month. recommended that a <40 Mbit/s non-exit relay should have at least 512 MB of RAM available; A relay faster than 40 Mbit/s should have at least 1 GB of RAM. (Advanced) Usage as a SOCKS proxyFreedomBox provides a Tor SOCKS port that other applications can connect to, in order to route their traffic over the Tor network. This port is accessible on any interfaces configured in the internal firewall zone. To configure the application, set SOCKS Host to the internal network connection's IP address, and set the SOCKS Port to 9050. Example with FirefoxYour web browser can be configured to use the Tor network for all of your browsing activity. This allows for censorship circumvention and also hides your IP address from websites during regular browsing. For anonymity, using tor browser is recommended. Configure your local FreedomBox IP address and port 9050 as a SOCKS v5 proxy in Firefox. There are extensions to allow for easily turning the proxy on and off. Configuring Firefox with Tor SOCKS proxyWith the SOCKS proxy configured, you can now access any onion URL directly from Firefox. FreedomBox itself has an onion v3 address that you can connect to over the Tor network (bookmark this for use in emergency situations). Circumventing Tor censorshipIf your ISP is trying to block Tor traffic, you can use tor bridge relays to connect to the tor network. 1. Get the bridge configuration from the Tor BridgeDBTor BridgeDB2. Add the lines to your FreedomBox Tor configuration as show below. Tor Configuration PageBack to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Transmission.raw.xml b/doc/manual/en/Transmission.raw.xml
index fc8f27f85..4f44e4345 100644
--- a/doc/manual/en/Transmission.raw.xml
+++ b/doc/manual/en/Transmission.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Transmission142019-10-27 04:42:42JosephNuthalapatiRemove irrelevant known issue132019-10-27 04:41:18JosephNuthalapatiMinor fixes122019-10-27 04:40:38JosephNuthalapati112019-09-04 09:19:59fioddorSecurity recommendation102019-03-22 07:08:45JosephNuthalapatiAdd tips on how to transfer downloads from FreedomBox to local PC92016-12-31 02:07:57JamesValleroyadd login info82016-12-30 19:20:51JamesValleroyreword72016-12-30 19:13:09JamesValleroyadd intro paragraph62016-12-30 18:59:46JamesValleroyno space in "BitTorrent"52016-12-26 18:00:44JamesValleroyadd screenshot42016-09-01 19:04:35Drahtseiladapted title to Plinth wording32016-04-10 07:27:22PhilippeBaretAdded bottom navigation link22015-12-15 20:42:02PhilippeBaret12015-12-15 18:23:33PhilippeBaretAdded Transmission page and definitionBitTorrent (Transmission)What is Transmission ?BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two BitTorrent web clients available in FreedomBox: Transmission and Deluge. They have similar features, but you may prefer one over the other. Transmission is a lightweight BitTorrent client that is well known for its simplicity and a default configuration that "Just Works". ScreenshotTransmission Web InterfaceUsing TransmissionAfter installing Transmission, it can be accessed at https://<your freedombox>/transmission. Transmission uses single sign-on from FreedomBox, which means that if you are logged in on your FreedomBox, you can directly access Transmission without having to enter the credentials again. Otherwise, you will be prompted to login first and then redirected to the Transmission app. TipsTransferring Downloads from the FreedomBoxTransmission's downloads directory can be added as a shared folder in the "Sharing" app. You can then access your downloads from this shared folder using a web browser. (Advanced) If you have the ssh access to your FreedomBox, you can use sftp to browse the downloads directory using a suitable file manager or web browser (e.g. dolphin or Konqueror). Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Transmission142019-10-27 04:42:42JosephNuthalapatiRemove irrelevant known issue132019-10-27 04:41:18JosephNuthalapatiMinor fixes122019-10-27 04:40:38JosephNuthalapati112019-09-04 09:19:59fioddorSecurity recommendation102019-03-22 07:08:45JosephNuthalapatiAdd tips on how to transfer downloads from FreedomBox to local PC92016-12-31 02:07:57JamesValleroyadd login info82016-12-30 19:20:51JamesValleroyreword72016-12-30 19:13:09JamesValleroyadd intro paragraph62016-12-30 18:59:46JamesValleroyno space in "BitTorrent"52016-12-26 18:00:44JamesValleroyadd screenshot42016-09-01 19:04:35Drahtseiladapted title to Plinth wording32016-04-10 07:27:22PhilippeBaretAdded bottom navigation link22015-12-15 20:42:02PhilippeBaret12015-12-15 18:23:33PhilippeBaretAdded Transmission page and definitionBitTorrent (Transmission)What is Transmission ?BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two BitTorrent web clients available in FreedomBox: Transmission and Deluge. They have similar features, but you may prefer one over the other. Transmission is a lightweight BitTorrent client that is well known for its simplicity and a default configuration that "Just Works". ScreenshotTransmission Web InterfaceUsing TransmissionAfter installing Transmission, it can be accessed at https://<your freedombox>/transmission. Transmission uses single sign-on from FreedomBox, which means that if you are logged in on your FreedomBox, you can directly access Transmission without having to enter the credentials again. Otherwise, you will be prompted to login first and then redirected to the Transmission app. TipsTransferring Downloads from the FreedomBoxTransmission's downloads directory can be added as a shared folder in the "Sharing" app. You can then access your downloads from this shared folder using a web browser. (Advanced) If you have the ssh access to your FreedomBox, you can use sftp to browse the downloads directory using a suitable file manager or web browser (e.g. dolphin or Konqueror). Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Upgrades.raw.xml b/doc/manual/en/Upgrades.raw.xml
index 8d24ca9b9..f8d88d84a 100644
--- a/doc/manual/en/Upgrades.raw.xml
+++ b/doc/manual/en/Upgrades.raw.xml
@@ -5,4 +5,4 @@ Password:
# apt -f install
# unattended-upgrade --debug
# apt install freedombox
-# apt update]]>If apt-get update asks for a confirmation to change Codename or other release information, confirm yes. If during update of freedombox package, if a question about overwriting configuration files is asked, answer to install new configuration files from the latest version of the package. This process will upgrade only packages that don't require configuration file questions (except for freedombox package). After this, let FreedomBox handle the upgrade of remaining packages. Be patient while new releases of FreedomBox are made to handle packages that require manual intervention. If you want to go beyond the recommendation to upgrade all the packages on your FreedomBox and if you are really sure about handling the configuration changes for packages yourself, run the following command: Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+# apt update]]>If apt-get update asks for a confirmation to change Codename or other release information, confirm yes. If during update of freedombox package, if a question about overwriting configuration files is asked, answer to install new configuration files from the latest version of the package. This process will upgrade only packages that don't require configuration file questions (except for freedombox package). After this, let FreedomBox handle the upgrade of remaining packages. Be patient while new releases of FreedomBox are made to handle packages that require manual intervention. If you want to go beyond the recommendation to upgrade all the packages on your FreedomBox and if you are really sure about handling the configuration changes for packages yourself, run the following command: Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/Users.raw.xml b/doc/manual/en/Users.raw.xml
index 1bedc0f43..e060c7adc 100644
--- a/doc/manual/en/Users.raw.xml
+++ b/doc/manual/en/Users.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/Users82019-07-29 22:34:11JamesValleroybetter wording72019-07-29 22:22:17JamesValleroyremove "Plinth"62019-07-29 22:10:39JamesValleroymention which releases known issue applies to52019-07-29 22:08:21JamesValleroyadd more supported groups42017-01-14 20:13:01JamesValleroyadd known issue32016-12-31 04:15:09JamesValleroyreword22016-09-01 19:21:25Drahtseiladapted title to Plinth wording12016-08-21 16:48:45DrahtseilCreated UsersUsers and GroupsYou can grant access to your FreedomBox for other users. Provide the Username with a password and assign a group to it. Currently the groups admin bit-torrent ed2k feed-reader syncthing web-search wiki are supported. The user will be able to log in to services that support single sign-on through LDAP, if they are in the appropriate group. Users in the admin group will be able to log in to all services. They can also log in to the system through SSH and have administrative privileges (sudo). A user's groups can also be changed later-on. It is also possible to set an SSH public key which will allow this user to securely log in to the system without using a password. You may enter multiple keys, one on each line. Blank lines and lines starting with # will be ignored. A user's account can be deactivated, which will temporarily disable the account. Known IssuesIn Debian Stretch, the FreedomBox web interface does not distinguish between users and administrators. Every user added will have full access to the web interface. This issue is fixed in Debian Buster and later. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/Users82019-07-29 22:34:11JamesValleroybetter wording72019-07-29 22:22:17JamesValleroyremove "Plinth"62019-07-29 22:10:39JamesValleroymention which releases known issue applies to52019-07-29 22:08:21JamesValleroyadd more supported groups42017-01-14 20:13:01JamesValleroyadd known issue32016-12-31 04:15:09JamesValleroyreword22016-09-01 19:21:25Drahtseiladapted title to Plinth wording12016-08-21 16:48:45DrahtseilCreated UsersUsers and GroupsYou can grant access to your FreedomBox for other users. Provide the Username with a password and assign a group to it. Currently the groups admin bit-torrent ed2k feed-reader syncthing web-search wiki are supported. The user will be able to log in to services that support single sign-on through LDAP, if they are in the appropriate group. Users in the admin group will be able to log in to all services. They can also log in to the system through SSH and have administrative privileges (sudo). A user's groups can also be changed later-on. It is also possible to set an SSH public key which will allow this user to securely log in to the system without using a password. You may enter multiple keys, one on each line. Blank lines and lines starting with # will be ignored. A user's account can be deactivated, which will temporarily disable the account. Known IssuesIn Debian Stretch, the FreedomBox web interface does not distinguish between users and administrators. Every user added will have full access to the web interface. This issue is fixed in Debian Buster and later. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/ejabberd.raw.xml b/doc/manual/en/ejabberd.raw.xml
index b07ccf3e9..f7801d1a1 100644
--- a/doc/manual/en/ejabberd.raw.xml
+++ b/doc/manual/en/ejabberd.raw.xml
@@ -1 +1 @@
-FreedomBox/Manual/ejabberd122019-03-01 17:43:12JosephNuthalapatiFix PageKite url112019-02-27 00:06:38JamesValleroymake title consistent with FreedomBox interface102018-03-02 13:01:38JosephNuthalapatiConsistent naming conventions92017-01-07 17:42:27JamesValleroyadd note about service restart82017-01-02 13:48:30JamesValleroyadd port forwarding info72016-12-31 03:11:19JamesValleroyclarify62016-12-31 03:10:19JamesValleroymention web client52016-12-31 02:35:52JamesValleroyadd security info42016-09-04 10:31:37Drahtseiladded links32016-04-10 07:18:35PhilippeBaretAdded bottom navigation link22015-12-15 18:37:29PhilippeBaretAdded definition to Chat server page12015-09-20 23:52:11JamesValleroyadd xmpp pageChat Server (ejabberd)What is XMPP?XMPP is a federated protocol for Instant Messaging. This means that users who have accounts on one server, can talk to users that are on another server. XMPP can also be used for voice and video calls, if supported by the clients. With XMPP, there are two ways that conversations can be secured: TLS: This secures the connection between the client and server, or between two servers. This should be supported by all clients and is highly recommended. End-to-end: This secures the messages sent from one client to another, so that even the server cannot see the contents. The latest and most convenient protocol is called OMEMO, but it is only supported by a few clients. There is another protocol called OTR that may be supported by some clients that lack OMEMO support. Both clients must support the same protocol for it to work. Setting the Domain NameFor XMPP to work, your FreedomBox needs to have a Domain Name that can be accessed over the public Internet. You can read more about obtaining a Domain Name in the Dynamic DNS section of this manual. Once you have a Domain Name, you can tell your FreedomBox to use it by setting the Domain Name in the System Configuration. Note: After changing your Domain Name, the Chat Server (XMPP) page may show that the service is not running. After a minute or so, it should be up and running again. Please note that PageKite does not support the XMPP protocol at this time. Registering XMPP users through SSOCurrently, all users created through Plinth will be able to login to the XMPP server. You can add new users through the System Users and Groups module. It does not matter which Groups are selected for the new user. Using the web clientAfter the XMPP module install completes, the JSXC web client for XMPP can be accessed at https://<your freedombox>/plinth/apps/xmpp/jsxc/. It will automatically check the BOSH server connection to the configured domain name. Using a desktop or mobile clientXMPP clients are available for various desktop and mobile platforms. Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for XMPP: TCP 5222 (client-to-server) TCP 5269 (server-to-server) Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Saturday, May 9th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
+FreedomBox/Manual/ejabberd122019-03-01 17:43:12JosephNuthalapatiFix PageKite url112019-02-27 00:06:38JamesValleroymake title consistent with FreedomBox interface102018-03-02 13:01:38JosephNuthalapatiConsistent naming conventions92017-01-07 17:42:27JamesValleroyadd note about service restart82017-01-02 13:48:30JamesValleroyadd port forwarding info72016-12-31 03:11:19JamesValleroyclarify62016-12-31 03:10:19JamesValleroymention web client52016-12-31 02:35:52JamesValleroyadd security info42016-09-04 10:31:37Drahtseiladded links32016-04-10 07:18:35PhilippeBaretAdded bottom navigation link22015-12-15 18:37:29PhilippeBaretAdded definition to Chat server page12015-09-20 23:52:11JamesValleroyadd xmpp pageChat Server (ejabberd)What is XMPP?XMPP is a federated protocol for Instant Messaging. This means that users who have accounts on one server, can talk to users that are on another server. XMPP can also be used for voice and video calls, if supported by the clients. With XMPP, there are two ways that conversations can be secured: TLS: This secures the connection between the client and server, or between two servers. This should be supported by all clients and is highly recommended. End-to-end: This secures the messages sent from one client to another, so that even the server cannot see the contents. The latest and most convenient protocol is called OMEMO, but it is only supported by a few clients. There is another protocol called OTR that may be supported by some clients that lack OMEMO support. Both clients must support the same protocol for it to work. Setting the Domain NameFor XMPP to work, your FreedomBox needs to have a Domain Name that can be accessed over the public Internet. You can read more about obtaining a Domain Name in the Dynamic DNS section of this manual. Once you have a Domain Name, you can tell your FreedomBox to use it by setting the Domain Name in the System Configuration. Note: After changing your Domain Name, the Chat Server (XMPP) page may show that the service is not running. After a minute or so, it should be up and running again. Please note that PageKite does not support the XMPP protocol at this time. Registering XMPP users through SSOCurrently, all users created through Plinth will be able to login to the XMPP server. You can add new users through the System Users and Groups module. It does not matter which Groups are selected for the new user. Using the web clientAfter the XMPP module install completes, the JSXC web client for XMPP can be accessed at https://<your freedombox>/plinth/apps/xmpp/jsxc/. It will automatically check the BOSH server connection to the configured domain name. Using a desktop or mobile clientXMPP clients are available for various desktop and mobile platforms. Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for XMPP: TCP 5222 (client-to-server) TCP 5269 (server-to-server) Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverviewHardwareLive HelpWhere To StartTranslateCallsTalksFeaturesVisionQ&ADesignTo DoReleasesPressDownloadManualCodeContributorsBlogFreedomBox for CommunitiesFreedomBox Developer ManualHELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN ProjectNext call: Sunday, May 24th at 17:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file
diff --git a/doc/manual/en/freedombox-manual.raw.xml b/doc/manual/en/freedombox-manual.raw.xml
index cda93188a..553743496 100644
--- a/doc/manual/en/freedombox-manual.raw.xml
+++ b/doc/manual/en/freedombox-manual.raw.xml
@@ -4,6 +4,12 @@
FreedomBox/Manual
+
+ 84
+ 2020-05-06 06:02:24
+ SunilMohanAdapa
+ Include Coturn app
+ 832020-05-04 07:46:54
@@ -590,6 +596,8 @@
Quick StartWhat you need to get started
+ The easy way is to buy a FreedomBox kit.
+ Alternatively you may choose to build it yourself, by gathering all the components: A supported device (including any device that can run Debian). We will call that the FreedomBox in the rest of this manual.
@@ -885,7 +893,13 @@
Download and Install
- Welcome to the FreedomBox download page. You may either install FreedomBox on one of the supported inexpensive hardware devices, on any Linux Debian operating system, or deploy it on a virtual machine.
+ Welcome to the FreedomBox download page.
+
+
+ Note: If you purchased a FreedomBox kit this section is not meant for you, so you can just skip it entirely. (Unless you specifically want to build an alternative software image).
+
+
+ You may either install FreedomBox on one of the supported inexpensive hardware devices, on any Debian operating system, or deploy it on a virtual machine. Installing on a machine running a Debian system is easy because FreedomBox is available as a package. We do recommend to install FreedomBox on a supported single board computer (SBC). The board will be dedicated for FreedomBox use from home, this will prevent a lot of risks, such as accidental misconfiguration by the user. In case of trouble deciding which hardware is best for you or during the installation, please use the support page or read the Questions and Answers page based on posts on the Freedombox-discuss mailing list archives. Downloading on Debian
@@ -1571,13 +1585,13 @@ dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=Synchronizing over Tor
- In Plinth, setting up a calendar with Radicale over Tor is the same as over the clear net. Here is a short summary:
+ In FreedomBox, setting up a calendar with Radicale over Tor is the same as over the clear net. Here is a short summary:
- When logged in to Plinth over Tor, click on Radicale, and at the prompt provide your FreedomBox user name and password.
+ When logged in to FreedomBox interface over Tor, click on Radicale, and at the prompt provide your FreedomBox user name and password.
- In the Radicale web interface, log in using your FreedomBox user name and password.
+ In the Radicale web interface, log in using your FreedomBox user name and password. Click on "Create new address book or calendar", provide a title, select a type, and click "Create".
@@ -1601,10 +1615,10 @@ dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of=Select CalDAV and for the location copy the URL, e.g., https://ONION-ADDRESS-FOR-YOUR-SERVER.onion/radicale/USERNAME/CALENDAR-CODE/. Items in italics need to be changed to match your settings.
- Provide a name, etc. Click "Next". Your calendar is now syncing with your FreedomBox over Tor.
+ Provide a name, etc. Click "Next". Your calendar is now syncing with your FreedomBox over Tor.
- If you have not generated a certificate for your FreedomBox with "Let's Encrypt", you may need to select "Confirm Security Exception" when prompted.
+ If you have not generated a certificate for your FreedomBox with "Let's Encrypt", you may need to select "Confirm Security Exception" when prompted.
@@ -2036,8 +2050,8 @@ echo "UPDATE users SET admin=1 WHERE name='@username:domainname'" | sudo sqlite3
- File Synchronization (Samba)
- Samba lets you have a shared folder over the local network that can be used from multiple computers running different operating systems. We will henceforth refer to these shared folders as "shares".
+ Network File Storage (Samba)
+ Samba lets you have shared folders over the local network that can be used from multiple computers running different operating systems. We refer to these shared folders as "shares". You can have a personal folder shared between your own devices (Home share), a folder shared with a trusted group (Group share) or one that is shared with every device on the network (Open share). Samba lets you to treat a share as if it's a local folder on your computer. However, shares are available only on the local network. To learn more about Samba, please refer to the user documentation on their wiki.
@@ -2093,7 +2107,7 @@ echo "UPDATE users SET admin=1 WHERE name='@username:domainname'" | sudo sqlite3
How to setup Quassel?
- Within Plinth
+ Within FreedomBox's web interface select Applications
@@ -2135,10 +2149,10 @@ echo "UPDATE users SET admin=1 WHERE name='@username:domainname'" | sudo sqlite3
-
+
- Quassel_PortForwarding.png
+ Quassel_PortForwarding_en_v01.png
@@ -2936,6 +2950,28 @@ $ sudo nmcli connection import type openvpn file /path/to/.ovpn]]>
+
+ VoIP Helper (Coturn)
+ Coturn is a server to facilitate audio/video calls and conferences by providing an implementation of TURN and STUN protocols. WebRTC, SIP and other communication servers can use it to establish a call between parties who are otherwise unable connect to each other.
+ It is not meant to be used directly by users. Servers such as Matrix Synapse need to be configured with the details provided on the Coturn app page. Apart from Matrix Synapse, Jitsi, Ejabberd, Nextcloud Talk, etc. can use Coturn server for audio/video calls and conferences. There is no need for the servers to be running on the same machine as FreedomBox and external servers can use Coturn running on FreedomBox.
+ Coturn is available in FreedomBox since version 20.8 as an advanced app. This means that you need to check "Show advanced apps and features" in "General Configuration" to see Coturn icon in the "Apps" section.
+
+ How it works
+ When making an audio/video call, it is best to route the media streams between two peers directly. This will give the best possible latency (better signal quality) and avoid depending on a centralized server (privacy). It scales well because a simple chat server can host thousands of calls without involving the server in any way other than to setup the call. However, this approach does not work most of the time to due to how networks are configured. Most peers on the network do not have a unique IP address allocated to them. They work hidden behind a network device that performs "Network Address Translation" (NAT) for them. This means that the two peers have no way of reaching each other.
+ To address this problem, a simple technique known as STUN was introduced. With the help of a third party STUN server, the peers can trick the NAT devices, to carry the traffic between the two peers. Unfortunately, this trick only works about 80% of the time. So, if STUN fails, peers have no choice but to route their traffic through an intermediary server called TURN server. All the mechanism of trying out STUN first and then falling back to TURN is described in a protocol known as ICE.
+ On FreedomBox, Coturn provides both STUN and TURN servers. Both services are provided over TCP as well as UDP. They are provided on unencrypted as well as encrypted channels (with have a higher chance of success). Since STUN servers are very inexpensive and don't consume a lot of server resources, there is no authentication needed to use them. TURN servers on the other hand need authentication. This authentication is highly simplified and does not require maintaining a database of users. A server such as matrix-synapse which is about to setup an audio/video call between two peers will generate a username and password using a shared secret. When the peers use the TURN server, they will be validated using these credentials because the TURN server also knows the same secret.
+ In summary, a communication server needs to know the URLs of the STUN/TURN servers along with a shared authentication secret for TURN. After that, during audio/video call setup, they will correctly guide the peers to use STUN/TURN servers. Coturn app in FreedomBox provides exactly this information. This information can be used to configure a communication server irrespective of whether it is running on the same FreedomBox or on another server.
+
+
+ Configuring Matrix Synapse
+ Matrix Synapse server in FreedomBox can be configured to use Coturn TURN/STUN server. In future, when you install Matrix Synapse, FreedomBox will automatically install Coturn and configure its parameters into Matrix Synapse. To configure Matrix Synapse, edit the file /etc/matrix-synapse/homeserver.yaml with the following lines:
+
+ And then restart matrix-synapse server by disabling and re-enabling the matrix-synapse app.
+
+ Web Proxy (Privoxy)A web proxy acts as a filter for incoming and outgoing web traffic. Thus, you can instruct any computer in your network to pass internet traffic through the proxy to remove unwanted ads and tracking mechanisms.
@@ -6690,22 +6726,15 @@ nmcli con modify "" connection.zone internal]]>
Performance (cockpit-pcp)
-
-
- Cockpit support for reading PCP metrics and loading PCP archives.
-
-
- Performance Co-Pilot (PCP) is a framework and services to support system-level performance monitoring and performance management.
-
-
- When this system app is installed and enabled, cockpit's graphs show the past (up to one week).
+ Performance app allows you to collect, store and view information about utilization of the hardware. This can gives you basic insights into usage patterns and whether the hardware is overloaded by users and services.
+ Performance metrics are collected by Performance Co-Pilot and can be viewed using the Cockpit app. Performance app is available in FreedomBox since version 20.9. When this system app is installed and enabled, cockpit's graphs shows the past (up to one year at a time).
-
+
- one-week.png
+ performance-one-week.png
@@ -8069,7 +8098,7 @@ Password: Pioneer Edition FreedomBox
- Pioneer FreedomBox Home Servers are produced and sold by Olimex, a company which specializes in Open Source Hardware. The kit includes pocket-sized server hardware, an SD card with the operating system pre-installed, and a backup battery which can power the hardware for 4-5 hours in case of outages. It sells for 82 euro. By purchasing this product, you also support the FreedomBox Foundation's efforts to create and promote its free and open source server software.
+ Pioneer FreedomBox Home Servers are produced and sold by Olimex, a company which specializes in Open Source Hardware (OSHW). The kit includes pocket-sized server hardware, an SD card with the operating system pre-installed, and a backup battery which can power the hardware for 4-5 hours in case of outages. It sells for 82 euro. An optional storage add-on for high capacity hard disk (HDD) or solid-state drive (SSD) is also available from Olimex. By purchasing this product, you also support the FreedomBox Foundation's efforts to create and promote its free and open source server software.
@@ -8102,6 +8131,9 @@ Password: an Ethernet cable.
+
+ an optional storage add-on for hard disk (HDD) or solid-state drive (SSD)
+
@@ -8125,6 +8157,7 @@ Password: Hardware Specifications
+ Pioneer Edition FreedomBox Home Server is based on A20-OLinuXino-LIME2 Rev.G. Open Source Hardware (OSHW): Yes
@@ -8138,6 +8171,12 @@ Password: Storage: 32GB class 10+ microSD card pre-loaded with FreedomBox
+
+ SATA: 1 SATA port 2.6 compliant 3Gb/s
+
+
+ USB: 2 USB 2.0 Hi-Speed host ports
+ Battery: 3.3V Li-Po, 1400mAh (4-5 hours of backup without additional devices connected via USB)
@@ -8147,12 +8186,70 @@ Password: Power adapter: 110-220 V input, 5V output, EU style (with optional UK or US sockets)
+
+ Power consumption: 1.5W and 5W depending on load (0.3A to 1A current)
+ Box: Custom metallic box with FreedomBox decal
+ Further information:
+
+
+
+ Quick start leaflet
+
+
+
+
+ Hardware source files
+
+
+
+
+ A20-OLinuXino-LIME2 rev.G schematic
+
+
+
+
+ A20 SOC datasheet
+
+
+ The kits run entirely on Free Software. They work with Kernel and u-boot from Debian repositories. Even the boot firmware in ROM called BROM is free software (GPLV2+).
+
+ Storage Add-on
+ You can order a storage add-on along with the Pioneer Edition FreedomBox Home Server. The storage add-on is a SATA disk drive enclosure case optionally with a hard disk or solid-state drive of size 128GB to 2000GB. If you have already purchased the Home Server without the add-on, you can order the add-on separately.
+
+
+
+ Olimex Store
+
+
+
+ Price: 9 EUR (without the hard disk, only for the case, you need to add your own HDD/SSD to it)
+
+
+ Price: 42 EUR (with 128GB Solid-State Drive)
+
+
+ Price: 69 EUR (with 512GB Solid-State Drive)
+
+
+ Price: 42 EUR (with 320GB Hard Disk)
+
+
+ Price: 53 EUR (with 500GB Hard Disk)
+
+
+ Price: 64 EUR (with 1000GB Hard Disk)
+
+
+ Price: 86 EUR (with 2000GB Hard Disk)
+
+
+ DownloadThe kits come with an SD card pre-loaded with FreedomBox. There's NO need to download images.
@@ -10184,6 +10281,78 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
Release NotesThe following are the release notes for each FreedomBox version.
+
+ FreedomBox 20.9 (2020-05-18)
+
+ Top Highlights
+
+
+ performance: Add app for system monitoring
+
+
+ upgrades: Restart services and system when needed after upgrades
+
+
+ System restart will happen at 02:00 local time
+
+
+
+
+
+
+ Other Changes
+
+
+ bind: Add service alias for bind9 -> named
+
+
+ firewall: Reload firewalld so it works with newly installed services
+
+
+ first_setup: Fix regression with logo not showing
+
+
+ locale: Update translations for Norwegian Bokmål, German, Swedish, Spanish, and Russian
+
+
+ mediawiki: Stop jobrunner during backup/restore
+
+
+ minidlna: Stop service during backup/restore
+
+
+ mumble: Stop service during backup/restore
+
+
+ package: Fix error log when checking if package manager is busy
+
+
+ performance: Launch the Cockpit graphs directly if possible
+
+
+ quassel: Fix stopping service during backup/restore
+
+
+ quassel: Use systemd sandboxing features
+
+
+ samba: Change description to Network File Storage
+
+
+ snapshot: Fix issues with restore and delete
+
+
+ snapshot: Set as essential module
+
+
+ storage: Auto-mount disks, notify of failing disks
+
+
+ tor: Fix stopping service during backup/restore
+
+
+
+ FreedomBox 20.8 (2020-05-04)
diff --git a/doc/manual/en/images/Quassel_PortForwarding_en_v01.png b/doc/manual/en/images/Quassel_PortForwarding_en_v01.png
new file mode 100644
index 0000000000000000000000000000000000000000..2f1c06772cf31bc70544af3d016f6432670cd298
GIT binary patch
literal 45458
zcmb5W2RN7Q|2M8h8POsm(m)g?l@O)UO+|JnWMq@QSJ4njsK}P=lsz-D$=)+NBeKbQ
zURT}U=l9J2bNuh)=;-d_<1^0dJm2rvdSB0ONnWEOXCNmbA)ylg=ZXvo$>tmql1-nt
zlj0E#8Yf%)wbfiyTy8u5bJ(u+6#u5TxO&?{*5tm0^*u9f5*=d`BkdFBnr7PC#^$;v
z7E@dDg-J*bl89fqBxe&e(QSKYpZrF_bged-($T$?`*v;h34L|_RYcgs&PdWjw~a@A
zW20I$KPUy{EWcG&P%w^CI`mj2FfcPr!y`+&?*$uoOqh#DSV7+6BAK_ZqSe;$@x^X~
zkSFIyssqe-o^hD!I;|t8oT%`e#*U4fd#9S38c9vCpkhhlF466*SL9E{jFE0rm-ZGM_O`2Q
zDXQt~>kCh@9B=t)`c5sJ^YHVcPsybG&@_-mqWe8(VfykWW7i7PL0&FW%8V
zFkrhj-%5YMj_;gt7stZ>M1`uL^X8S7Us7~xHT3ifPc*da8
zarNt(U01e;Y{)6+x5|m!)7GEt7mX!Dg%b@`GK^2iuI-C`|C`f1!JS65*Uw_@jk@B~
zL;LCJ>+|fb$66AvJ2(iDjJGDSb8tM}c|f2p-`RO+&re2^+`@0~&W*MtGRDTn;@Q(f
zZ`5|v(71$#ve++9%8$*@&kz0T`&zl)k!G;mn!jF>zdp~?lBAaOp8d#?x-7X{(t*al3_y3ieP3(R`=1?Ua;Fqs~fYxiPa$B2GcLIJ{O9w@IlO
z-Z!=+cj<8$tvNY49XWb*(qK>ZT{(Jp
zqw2r}Td(;2%E@D^ua>Uc#?$n(TuM~XG&H;+CPs?AF!;{o3o9GjV|=Jz&5CN9PMQzj
z@bvO(&$i^+xpU|H_wRpAq|_2`E#}2g@^Bl4-*4gdCC#p`F2C%^$jH%#C<<3s*NL7y
zl^qwUC@J}^Cz&>F+LWN07l?~KQ%J_*_g2vlSL?K1!;vp*3n~i}?O(BVZl@b6#jea(
zpRVPwJj%{~+O+=)E%%-Bg`b_H&GB>tW!_{3b#*UK>(taGYhOQf=+IKF^Lk|CMzW`^
z>BuQw-b2TZJ$rFLFxhNKA~;>({CWQ|A??`S)>g%=S*IU$tT+x!1KuJe{0>VejXF|~
z5i7}a>Xc8(bGj7cZh^DLUAG7A>PozHG&Bxff5WZaoo%^_U%<89a{2OCUavG7QMuIq
zkBKFBGdu)8@?#ZQxY~lVb@amvCvhQkd%s*rPfx$Cq*Na#&lQ|RnPJjf^ZJB}gk?yw
z-@b@LL&L+#rUPO!GBUrWrwdzJUOytEmPt~*K%$&s{4MJG8}bV+#l>#lzpIltI5=cl
z{S17y_&uM>rLFDu`qaicH5V6G^|x<&-PvbOojN67id4P);|Hi=L^0#uIScBY?~i%B|CWJh+D7o1{QmgMBUg}
za%JJ?rU&Ncjib({%m-%sYa(T0>vZ{|LhM)ipY!yOkH;HgKhvyJD|3-wY7!S>)y_`h@JV>gpU&=8!Z`bd0SbT
zQ-pES7AJv1WJh#EF|b+BV&|dGpk{bFDjyDaJRfdmW>@{F%<^?_FD2B=caNeO05W
zsrktD(x`9>k4n0ya+>~V)4pB1q{n_cIyx$S*4Ty@E-f#AN~db$dQA4iuU0kZzQI8^
ze}DOBn#&IyGmN{7N=wBm>@yE|bLtD7=H;~*;}|8Xs+6c{>tz2&m7{lOtKy3ubvH&!
z`33}3RPp3j$0vOuFPN*Ffvl!}V2o3%GqdN&%vFO$7Ku2fVPe)+uR*j_KjbN6QkD{chvx_gVPzuiVb`!X=l
zh|b@?a0IYK5j(|JRZ&1*kLDPHp?p2btGMv%p7`^IcD?TC}D_4>}Tc3@MRCzZ)
zCFOKLK)^(I&KvCW7ulBMW?j63ijtJ-2qjg#mT5D+_|
z_$E5Sokl9-KSy`6us4@%618b;!B3CjYv3M(TQ}vy1LGo^Un!6{Sp7PEH1XOMYM~1k
zKBuSO$NtG(9)4%ok^1a072|GZ<`==i2X^h+MdJ44Ns7a=*$Wntny0%C>vpD}5ZPEg
z{e+rDVOU2H{5OAtKIhL9_k>YprBxn?MQI4h163GZ7r?u6BC|kX=kt|8YnXo
z>UxHTp6GeJbq;MkdG;0M5*Qxxb1iB*G|`t#v!o49aRnHYf)-o~&2#EX%s58+Uu;
zoQnDAX=U}1*Zj%SBO)Sno8$az4wM(&
zzJ2@q_wO!`9&Mqer9JvWUa3a*b?+tHmFd;lTH*^Sr|NEUiI3+pXh{ga`R?q+>5Ugc
zaX6w(0v1pG{Ps5KTV@IKpE2t2L-~3Y5+Z4A%q@b_A23cM`qV?=?nUh85$3qEa9k
zI$q&~m^ZVRSY%;U6$J?y85ypHskJrx(WCAr`D?F<_MT~~xqJ6+5^}#2HII_!Uof2)
zMLiK&o7-b*YN|aNLQ^u=J-?$+c(%~$Jjqfi{4>UnwlkMc>{Wx+OrJnQ>S^YEQ13!M0R|lLXa1C1i
zSJZ0O%a8rC)pTltq{qz6%=#m}g*A$w?!sFpYnJW2UmJ4wb>DISw5N5uBW3J;iOt@O7}lH$cFWb9SV5
zq$N=WyXqId^do21C;K~dzby}Ev$7&d
z(ZG!+BKgATxPp6adw04KW4uD5##mEqQ<55sv$OO4Z-H0GTN0PYlk&;^LIth4-<>rg
zs*}Y;n-7-E_uV@c-R=(`K9E$Nn0OMpUolqBVX5y4@rS64^r!Ei1cG?H^MJ(9jx?_9
zccMbON*rlVjEu;IUo-B>6-PsP>fuq;-5re1$VDwk&U!`L?vvYn%Xq+o&li>5$#TTR
z#1d|QewdlbPfE?~`T6rHd_d7CnZBth@7UO5ocTmIrvjxl!*|UR!
zA`%Fe*i;sy4en_Mtz&+uLR{v<)qU8+MJV@D!pm;Lj=z6R=1lP#b?~jvhHiYi|Bb=8
z_lwuNcZ@hVfXDA6a@f~5&D~>o1XjYztQNI3M^x_24l4lk?VG%(NzeS@CaiISe;;CX
z>v^TF_=m&%IPrgY=?>o5Fseohrc`WZ};YZ?0
z|NkG-mh0K#J9Q*wsa(S$*l~2MCGAk>kt^={DAV%iE)kzj{(YCV6`pe1vR2MXeDx~(
z8VEv+9A`p8!aw5T(hVzfqmQuhV#j*EI0~wy8y+)hl&~0UIwr@t@AUoZm{jvWU-4<2
zqF&>E-qWW8&KM|Uy>Oh$TjV^^)~w6tFO&4=lgBvW-$pG7^nh(=-f-XL