From d7f97a0096ba31d226e60307aec163cc71ac69e5 Mon Sep 17 00:00:00 2001
From: 109247019824
Date: Sat, 18 Mar 2023 05:09:08 +0000
Subject: [PATCH 01/20] Translated using Weblate (Bulgarian)
Currently translated at 44.2% (658 of 1486 strings)
---
plinth/locale/bg/LC_MESSAGES/django.po | 84 +++++++++++++++++---------
1 file changed, 55 insertions(+), 29 deletions(-)
diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po
index 7f964b4d7..62d89d961 100644
--- a/plinth/locale/bg/LC_MESSAGES/django.po
+++ b/plinth/locale/bg/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-13 21:32-0400\n"
-"PO-Revision-Date: 2023-02-16 19:39+0000\n"
+"PO-Revision-Date: 2023-03-19 06:38+0000\n"
"Last-Translator: 109247019824 \n"
"Language-Team: Bulgarian \n"
@@ -17,7 +17,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.16-dev\n"
+"X-Generator: Weblate 4.16.2-dev\n"
#: doc/dev/_templates/layout.html:11
msgid "Page source"
@@ -1474,7 +1474,7 @@ msgid ""
"System is low on memory: {percent_used}% used, {memory_available} "
"{memory_available_unit} free. {advice_message}"
msgstr ""
-"Системата разполага с малко памет: използвани {percent_used} %, "
+"Системата разполага с малко памет: използвана {percent_used} %, свободна "
"{memory_available} {memory_available_unit}. {advice_message}"
#: plinth/modules/diagnostics/__init__.py:238
@@ -1484,11 +1484,11 @@ msgstr "Паметта е малко"
#: plinth/modules/diagnostics/templates/diagnostics.html:17
#: plinth/modules/diagnostics/templates/diagnostics_button.html:11
msgid "Run Diagnostics"
-msgstr "Начало на диагностиката"
+msgstr "Диагностика"
#: plinth/modules/diagnostics/templates/diagnostics.html:20
msgid "Diagnostics test is currently running"
-msgstr "Диагностичната проверка в момента се извършва"
+msgstr "Извършва се диагностика"
#: plinth/modules/diagnostics/templates/diagnostics.html:33
msgid "Results"
@@ -1657,7 +1657,7 @@ msgstr "Потребителско име"
#: plinth/modules/dynamicdns/forms.py:95 plinth/modules/networks/forms.py:215
msgid "Show password"
-msgstr ""
+msgstr "Показване на паролата"
#: plinth/modules/dynamicdns/forms.py:99
msgid "URL to look up public IP"
@@ -2334,6 +2334,7 @@ msgid ""
"There is a new %(box_name)s version available"
"a>."
msgstr ""
+"Налично е ново издание на %(box_name)s."
#: plinth/modules/help/templates/help_about.html:28
#: plinth/modules/upgrades/templates/upgrades_configure.html:37
@@ -2377,6 +2378,8 @@ msgid ""
"For more information about the %(box_name)s project, see the %(box_name)s Wiki."
msgstr ""
+"За повече информация относно проекта %(box_name)s посетете документацията на %(box_name)s."
#: plinth/modules/help/templates/help_about.html:78
msgid "Learn more"
@@ -3393,10 +3396,14 @@ msgid ""
"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."
msgstr ""
+"Услугите за имена предоставят преглед на начините, по които {box_name} може "
+"да бъде достъпен от публичния интернет: име на домейн, Tor onion service и "
+"Pagekite. За всеки тип име е показано дали услугите HTTP, HTTPS и SSH са "
+"разрешени или забранени за входящи връзки през даденото име."
#: plinth/modules/names/__init__.py:43
msgid "Name Services"
-msgstr ""
+msgstr "Услуги за имена"
#: plinth/modules/names/components.py:12
msgid "All"
@@ -3408,11 +3415,11 @@ msgstr "Всички приложения за уеб"
#: plinth/modules/names/components.py:24
msgid "Secure Shell"
-msgstr ""
+msgstr "Secure Shell"
#: plinth/modules/names/templates/names.html:17
msgid "Services"
-msgstr ""
+msgstr "Услуги"
#: plinth/modules/networks/__init__.py:34
msgid ""
@@ -3425,96 +3432,111 @@ msgid ""
"Devices administered through other methods may not be available for "
"configuration here."
msgstr ""
+"Управляваните по друг начин устройства ще бъдат недостъпни за управление от "
+"тук."
#: plinth/modules/networks/__init__.py:57
msgid "Networks"
-msgstr ""
+msgstr "Мрежи"
#: plinth/modules/networks/forms.py:16
msgid "Connection Type"
-msgstr ""
+msgstr "Вид на връзката"
#: plinth/modules/networks/forms.py:28
msgid "Connection Name"
-msgstr ""
+msgstr "Име на връзката"
#: plinth/modules/networks/forms.py:30
msgid "Network Interface"
-msgstr ""
+msgstr "Мрежов интерфейс"
#: plinth/modules/networks/forms.py:31
msgid "The network device that this connection should be bound to."
-msgstr ""
+msgstr "Мрежовото устройство, което използва тази връзка."
#: plinth/modules/networks/forms.py:34
msgid "Firewall Zone"
-msgstr ""
+msgstr "Зона на защитната стена"
#: plinth/modules/networks/forms.py:35
msgid ""
"The firewall zone will control which services are available over this "
"interfaces. Select Internal only for trusted networks."
msgstr ""
+"Зоната на защитната стена ще контролира кои услуги са достъпни през този "
+"интерфейс. Изберете „само вътрешни“ единствено за доверени мрежи."
#: plinth/modules/networks/forms.py:39
msgid "IPv4 Addressing Method"
-msgstr ""
+msgstr "Метод за адресиране на IPv4"
#: plinth/modules/networks/forms.py:41
msgid ""
"Automatic (DHCP): Configure automatically, use Internet connection from this "
"network"
msgstr ""
+"Автоматично (DHCP): Настройва се автоматично, използва се интернет връзка от "
+"тази мрежа"
#: plinth/modules/networks/forms.py:44
msgid ""
"Shared: Act as a router, provide Internet connection to other devices on "
"this network"
msgstr ""
+"Споделено: работи като маршрутизатор, осигурява интернет връзка на други "
+"устройства в тази мрежа"
#: plinth/modules/networks/forms.py:47 plinth/modules/networks/forms.py:85
msgid ""
"Manual: Use manually specified parameters, use Internet connection from this "
"network"
msgstr ""
+"Ръчно: Използвайте ръчно зададени параметри, използвайте интернет връзка от "
+"тази мрежа"
#: plinth/modules/networks/forms.py:50
msgid "Disabled: Do not configure this addressing method"
-msgstr ""
+msgstr "Изллючено: Без настройка на адресирането"
#: plinth/modules/networks/forms.py:57
msgid "Netmask"
-msgstr ""
+msgstr "Мрежова маска"
#: plinth/modules/networks/forms.py:58
msgid ""
"Optional value. If left blank, a default netmask based on the address will "
"be used."
msgstr ""
+"Незадължителна стойност. Ако бъде оставена празна, ще се използва мрежова "
+"маска по подразбиране, базирана на адреса."
#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:97
#: plinth/modules/networks/templates/connection_show.html:193
#: plinth/modules/networks/templates/connection_show.html:234
msgid "Gateway"
-msgstr ""
+msgstr "Шлюз"
#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:97
msgid "Optional value."
-msgstr ""
+msgstr "Незадължителна стойност."
#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:100
msgid "DNS Server"
-msgstr ""
+msgstr "Сървър на DNS"
#: plinth/modules/networks/forms.py:66
msgid ""
"Optional value. If this value is given and IPv4 addressing method is "
"\"Automatic\", the DNS Servers provided by a DHCP server will be ignored."
msgstr ""
+"Незадължителна стойност. Ако стойността е зададена и методът за IPv4 "
+"адресиране е „Автоматичен“, сървърите на DNS, предоставени от DHCP, ще бъдат "
+"пренебрегнати."
#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:106
msgid "Second DNS Server"
-msgstr ""
+msgstr "Втори сървър на DNS"
#: plinth/modules/networks/forms.py:72
msgid ""
@@ -4712,13 +4734,15 @@ msgstr "Рестартирайте или изключете системата.
#: plinth/modules/power/__init__.py:31
msgid "Power"
-msgstr ""
+msgstr "Захранване"
#: plinth/modules/power/templates/power.html:13
msgid ""
"Currently an installation or upgrade is running. Consider waiting until it's "
"finished before shutting down or restarting."
msgstr ""
+"В момента тече процес на инсталация или обновяване. Помислете дали да не "
+"изчакате, докато тя приключи, преди да рестартирате или изключите."
#: plinth/modules/power/templates/power.html:22 plinth/templates/base.html:174
#: plinth/templates/base.html:175
@@ -4734,16 +4758,16 @@ msgid ""
"Are you sure you want to restart? You will not be able to access this web "
"interface for a few minutes until the system is restarted."
msgstr ""
-"Сигурни ли сте, че искате да рестартирате? Няма да имате достъп до този "
-"интерфейс за няколко минути, докато системата не се рестартира."
+"Желаете ли да рестартирате устройството? Докато рестартът не завърши няма да "
+"има достъп до отдалечения интерфейс."
#: plinth/modules/power/templates/power_restart.html:34
msgid ""
"Currently an installation or upgrade is running. Consider waiting until it's "
"finished before restarting."
msgstr ""
-"В момента тече инсталация или обновяване. Помислете дали да не изчакате, "
-"докато тя приключи, преди да рестартирате."
+"В момента тече процес на инсталация или обновяване. Помислете дали да не "
+"изчакате, докато тя приключи, преди да рестартирате."
#: plinth/modules/power/templates/power_restart.html:48
#: plinth/modules/power/templates/power_restart.html:51
@@ -4755,14 +4779,16 @@ msgid ""
"Are you sure you want to shut down? You will not be able to access this web "
"interface after shut down."
msgstr ""
-"Сигурни ли сте, че искате да изключите устройството? Няма да имате достъп до "
-"този интерфейс."
+"Желаете ли изключите устройството? Няма да има достъп до отдалечения "
+"интерфейс."
#: plinth/modules/power/templates/power_shutdown.html:33
msgid ""
"Currently an installation or upgrade is running. Consider waiting until it's "
"finished before shutting down."
msgstr ""
+"В момента тече процес на инсталация или обновяване. Помислете дали да не "
+"изчакате, докато тя приключи, преди да изключите."
#: plinth/modules/power/templates/power_shutdown.html:47
#: plinth/modules/power/templates/power_shutdown.html:50
From 42879bbcb134002495f2da43e4a60b8d00e85b92 Mon Sep 17 00:00:00 2001
From: 109247019824
Date: Mon, 20 Mar 2023 05:54:58 +0000
Subject: [PATCH 02/20] Translated using Weblate (Bulgarian)
Currently translated at 44.4% (660 of 1486 strings)
---
plinth/locale/bg/LC_MESSAGES/django.po | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po
index 62d89d961..72d2a8c18 100644
--- a/plinth/locale/bg/LC_MESSAGES/django.po
+++ b/plinth/locale/bg/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-13 21:32-0400\n"
-"PO-Revision-Date: 2023-03-19 06:38+0000\n"
+"PO-Revision-Date: 2023-03-21 06:38+0000\n"
"Last-Translator: 109247019824 \n"
"Language-Team: Bulgarian \n"
@@ -3530,8 +3530,8 @@ msgid ""
"Optional value. If this value is given and IPv4 addressing method is "
"\"Automatic\", the DNS Servers provided by a DHCP server will be ignored."
msgstr ""
-"Незадължителна стойност. Ако стойността е зададена и методът за IPv4 "
-"адресиране е „Автоматичен“, сървърите на DNS, предоставени от DHCP, ще бъдат "
+"Незадължителна стойност. Ако стойността е зададена и методът за адресиране "
+"на IPv4 е „Автоматичен“, сървърите на DNS, предоставени от DHCP, ще бъдат "
"пренебрегнати."
#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:106
@@ -3543,10 +3543,13 @@ msgid ""
"Optional value. If this value is given and IPv4 Addressing Method is "
"\"Automatic\", the DNS Servers provided by a DHCP server will be ignored."
msgstr ""
+"Незадължителна стойност. Ако стойността е зададена и методът за адресиране "
+"на IPv4 е „Автоматичен“, сървърите на DNS, предоставени от DHCP, ще бъдат "
+"пренебрегнати."
#: plinth/modules/networks/forms.py:77
msgid "IPv6 Addressing Method"
-msgstr ""
+msgstr "Метод за адресиране на IPv6"
#: plinth/modules/networks/forms.py:79
msgid ""
From 9c0e339dafb05f846de22d9b3a94280ee17f677e Mon Sep 17 00:00:00 2001
From: Veiko Aasa
Date: Sun, 19 Mar 2023 13:31:51 +0200
Subject: [PATCH 03/20] container: Force pip to install packages to system
environment
Without the change, pip refuses to install into system environment due to
changes outlined in PEP 668. The following error is thrown: 'error:
externally-managed-environment'.
Signed-off-by: Veiko Aasa
Reviewed-by: James Valleroy
---
plinth/tests/functional/install.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plinth/tests/functional/install.sh b/plinth/tests/functional/install.sh
index 829274bfb..4ad8ee8b4 100755
--- a/plinth/tests/functional/install.sh
+++ b/plinth/tests/functional/install.sh
@@ -8,7 +8,7 @@ sudo apt-get install -yq --no-install-recommends \
python3-pip python3-wheel firefox-esr git smbclient
# Use compatible versions of Splinter and Selenium
-pip3 install --user selenium==4.2.0 splinter==0.17.0 pytest-splinter pytest-reporter-html1
+pip3 install --user --break-system-packages selenium==4.2.0 splinter==0.17.0 pytest-splinter pytest-reporter-html1
echo "Installing geckodriver"
(
From fa1711f84f07f05cc566ee6d56d575ca812a2058 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Sun, 26 Feb 2023 06:35:41 +0530
Subject: [PATCH 04/20] container: Fix resizing disk image containing multiple
partitions
Closes: #2324.
The arm64 image contains two partitions in a GPT partition table. First is the
EFI partition and the second is the root partition. The container script
currently assumes that there will only be one partition in the image file. Fix
this by picking up the partition number of the last partition and resizing that.
GPT partition table also requires relocating the second copy of the partition
table to the end before partition resize can succeed.
Tests:
- Create testing containers in arm64 and amd64 architectures.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
container | 28 ++++++++++++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
diff --git a/container b/container
index cbb1fadc1..eab4dae2f 100755
--- a/container
+++ b/container
@@ -368,6 +368,7 @@ def _verify_dependencies():
'gpg': 'gpg',
'xz': 'xz-utils',
'parted': 'parted',
+ 'sgdisk': 'gdisk',
'btrfs': 'btrfs-progs',
'nmcli': 'network-manager',
'ssh': 'openssh-client',
@@ -522,6 +523,21 @@ def _download_disk_image(distribution, force=False):
return _extract_image(target_file)
+def _get_partition_info(image_file):
+ """Return the number of the final partition in the image file."""
+ process = subprocess.run(
+ ['sudo', 'parted', '--script',
+ str(image_file), 'print'], stdout=subprocess.PIPE, check=True)
+ lines = process.stdout.decode().splitlines()
+ last_partition_number = lines[-2].split()[0]
+ partition_table_type = 'msdos'
+ for line in lines:
+ if line.startswith('Partition Table:'):
+ partition_table_type = line.partition(': ')[2]
+
+ return partition_table_type, last_partition_number
+
+
def _resize_disk_image(image_file, new_size):
"""Resize the disk image if has not already been."""
if new_size[-1] != 'G':
@@ -542,14 +558,22 @@ def _resize_disk_image(image_file, new_size):
['truncate', '--size',
str(new_size_bytes),
str(image_file)], check=True)
+ partition_table_type, last_partition_number = _get_partition_info(
+ image_file)
+ if partition_table_type == 'gpt':
+ subprocess.run(
+ ['sudo', 'sgdisk', '--move-second-header',
+ str(image_file)], check=True)
+
subprocess.run([
'sudo', 'parted', '--align=optimal', '--script',
- str(image_file), 'resizepart', '1', '100%'
+ str(image_file), 'resizepart', last_partition_number, '100%'
], check=True)
process = subprocess.run(
['sudo', 'kpartx', '-avs', str(image_file)], stdout=subprocess.PIPE,
check=True)
- partition = '/dev/mapper/' + process.stdout.decode().split()[2]
+ last_line = process.stdout.decode().splitlines()[-1]
+ partition = '/dev/mapper/' + last_line.split()[2]
subprocess.run(['sudo', 'btrfstune', '-uf', partition], check=True)
with tempfile.TemporaryDirectory(
From e048e6814c64e20539f477af493a17e8772d457f Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Sun, 26 Feb 2023 08:50:16 +0530
Subject: [PATCH 05/20] container: Increase wait time to accommodate slower
architectures
This is for arm64 boards like Raspberry Pi and cross-arch VMs.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
container | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/container b/container
index eab4dae2f..710fd3645 100755
--- a/container
+++ b/container
@@ -967,7 +967,7 @@ def _get_ssh_command(ip_address, distribution):
def _wait_for(method):
"""Wait until a condition is satisfied or finally give up."""
- for _ in range(10):
+ for _ in range(60):
return_value = method()
if return_value:
return return_value
From 485107604fe24591472a7776942e2e5d9c5298e8 Mon Sep 17 00:00:00 2001
From: Veiko Aasa
Date: Sun, 19 Mar 2023 19:55:29 +0200
Subject: [PATCH 06/20] tests: functional: Fix setting first ethernet
connection as internal
Tested that all samba tests pass in testing container. Also checked that
connection type texts are not translated, thus safe to use in xpath search.
Fixes #2333.
Signed-off-by: Veiko Aasa
Reviewed-by: James Valleroy
---
plinth/tests/functional/__init__.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/plinth/tests/functional/__init__.py b/plinth/tests/functional/__init__.py
index ecf939dfe..edcc133b6 100644
--- a/plinth/tests/functional/__init__.py
+++ b/plinth/tests/functional/__init__.py
@@ -555,7 +555,10 @@ def backup_restore(browser, app_name, archive_name=None):
def networks_set_firewall_zone(browser, zone):
""""Set the network device firewall zone as internal or external."""
nav_to_module(browser, 'networks')
+ # First active Ethernet connection
device = browser.find_by_xpath(
+ '//span[contains(@class, "connection-type-label") and '
+ 'contains(., "Ethernet") ]/../..'
'//span[contains(@class, "badge-success") '
'and contains(@class, "connection-status-label")]/following::a').first
network_id = device['href'].split('/')[-3]
From f25e2706d2817ba02dae677ae8ab069ec117afff Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Sat, 1 Apr 2023 19:39:52 +0530
Subject: [PATCH 07/20] tests: Don't error during collection if selenium is not
installed
This fixes the current pipeline failures.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
conftest.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/conftest.py b/conftest.py
index 3ba2576e8..333e66fa7 100644
--- a/conftest.py
+++ b/conftest.py
@@ -13,15 +13,16 @@ import pytest
try:
importlib.import_module('splinter')
- _splinter_available = True
+ importlib.import_module('selenium')
+ _functional_libs_available = True
except ImportError:
- _splinter_available = False
+ _functional_libs_available = False
def pytest_ignore_collect(path, config):
"""Ignore functional tests when splinter is not available."""
if path.basename == 'test_functional.py':
- return not _splinter_available
+ return not _functional_libs_available
def pytest_addoption(parser):
From 43499ae8eff1744442840337b3504f23930e06f3 Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Sun, 12 Mar 2023 11:52:10 -0400
Subject: [PATCH 08/20] HACKING: Force pip to install packages to system
environment
See 550f9192ae4e5c4dd486ba08738ecee322929fce.
Signed-off-by: James Valleroy
[sunil: pip option --break-system-packages works only from Bookworm]
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
HACKING.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/HACKING.md b/HACKING.md
index 3a749a6f3..650dc7c30 100644
--- a/HACKING.md
+++ b/HACKING.md
@@ -450,12 +450,12 @@ host$ vagrant provision --provision-with tests
Follow the instructions below to run the tests on host machine. If you wish
perform the tests on host machine, the host machine must be based on Debian
-Buster (or later).
+Bookworm (or later).
```bash
-host$ pip3 install splinter
-host$ pip3 install pytest-splinter
-host$ pip3 install pytest-xdist # optional, to run tests in parallel
+host$ pip3 install --break-system-packages splinter
+host$ pip3 install --break-system-packages pytest-splinter
+host$ pip3 install --break-system-packages pytest-xdist # optional, to run tests in parallel
host$ sudo apt install firefox
host$ sudo apt install smbclient # optional, to test samba
```
From fd9b047859c83d39b130a7b25dda2f001b974d6d Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Sun, 2 Apr 2023 14:37:06 +0530
Subject: [PATCH 09/20] tests: functional: Make install script work for
Bullseye
- Pip option --break-system-packages is available only from Bookworm.
- Remove --user to that the script works can be used broadly.
Tests:
- On a fresh stable container, running functional tests works. Without the
patch, it fails.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/tests/functional/install.sh | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/plinth/tests/functional/install.sh b/plinth/tests/functional/install.sh
index 4ad8ee8b4..ff719feb5 100755
--- a/plinth/tests/functional/install.sh
+++ b/plinth/tests/functional/install.sh
@@ -8,7 +8,10 @@ sudo apt-get install -yq --no-install-recommends \
python3-pip python3-wheel firefox-esr git smbclient
# Use compatible versions of Splinter and Selenium
-pip3 install --user --break-system-packages selenium==4.2.0 splinter==0.17.0 pytest-splinter pytest-reporter-html1
+PIP_VERSION=$(dpkg-query -W -f '${Version}' python3-pip)
+PIP_OPTIONS=
+dpkg --compare-versions 23 \<= $PIP_VERSION && PIP_OPTIONS=--break-system-packages
+pip3 install $PIP_OPTIONS selenium==4.2.0 splinter==0.17.0 pytest-splinter pytest-reporter-html1
echo "Installing geckodriver"
(
From 632608042d1fe3bb75ebfc6c5c94e31dadf3e7fa Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Sun, 12 Mar 2023 11:53:10 -0400
Subject: [PATCH 10/20] ci: Force pip install for functional tests
See 550f9192ae4e5c4dd486ba08738ecee322929fce.
Signed-off-by: James Valleroy
[sunil: Rely fully on running the install.sh script remove the pip3 rerun]
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
.ci/functional-tests.yml | 1 -
1 file changed, 1 deletion(-)
diff --git a/.ci/functional-tests.yml b/.ci/functional-tests.yml
index 18651dae3..1655fd651 100644
--- a/.ci/functional-tests.yml
+++ b/.ci/functional-tests.yml
@@ -34,7 +34,6 @@
- adduser tester --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password && echo "tester:password" | chpasswd
script:
- cp -r . /home/tester/freedombox && chown -R tester:tester /home/tester/freedombox
- - sudo -u tester bash -c 'pip3 install --user selenium==4.2.0 splinter==0.17.0 pytest-splinter pytest-reporter-html1'
- |
sudo FREEDOMBOX_URL="https://$APP_SERVER_IP" -u tester bash -c \
'cd /home/tester/freedombox && py.test-3 -v --durations=10 --include-functional --splinter-headless --template=html1/index.html --report=functional-tests.html'
From 459ac5ee3d3811dcde38bc1f9f2c62f1aa5ff39b Mon Sep 17 00:00:00 2001
From: 109247019824
Date: Wed, 5 Apr 2023 18:06:58 +0000
Subject: [PATCH 11/20] Translated using Weblate (Bulgarian)
Currently translated at 44.4% (660 of 1486 strings)
---
plinth/locale/bg/LC_MESSAGES/django.po | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po
index 72d2a8c18..e31f1b53a 100644
--- a/plinth/locale/bg/LC_MESSAGES/django.po
+++ b/plinth/locale/bg/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-13 21:32-0400\n"
-"PO-Revision-Date: 2023-03-21 06:38+0000\n"
+"PO-Revision-Date: 2023-04-06 18:52+0000\n"
"Last-Translator: 109247019824 \n"
"Language-Team: Bulgarian \n"
@@ -17,7 +17,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.16.2-dev\n"
+"X-Generator: Weblate 4.17-dev\n"
#: doc/dev/_templates/layout.html:11
msgid "Page source"
@@ -697,7 +697,7 @@ msgstr "Създадено е отдалечено хранилище с дос
#: plinth/modules/backups/views.py:379
msgid "Verify SSH hostkey"
-msgstr "Проверяване на ключа за SSH на хоста"
+msgstr "Проверяване на ключ за SSH на хост"
#: plinth/modules/backups/views.py:405
msgid "SSH host already verified."
@@ -705,7 +705,7 @@ msgstr "SSH на хоста вече е проверен."
#: plinth/modules/backups/views.py:415
msgid "SSH host verified."
-msgstr "Ключът на хоста е проверен."
+msgstr "SSH на хоста е проверен."
#: plinth/modules/backups/views.py:430
msgid "SSH host public key could not be verified."
From 48eadfdd514d4b07073c64e0f49c2be840090e4d Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Mon, 3 Apr 2023 12:54:08 +0530
Subject: [PATCH 12/20] datetime: Re-implment backup/restore for timezone
Closes: #2326.
Earlier /etc/timezone was used to store timezone. Now, we use /etc/localtime
symlink instead. Since the change, backup/restore for timezone has not been
working. Implement this by backing up and restoring the new symlink. Borg
understands symlinks so it properly backs them up and restore them.
When the symlink is restored, timedatectl does not immediately show the new
timezone. This is because a DBus activated daemon 'systemd-timedated' which
supplies the information for timedatectl needs to be reloaded. Add this service
to list of services that backup framework needs to restart.
Tests:
- Set a new timezone. Backup datetime app. Set another timezone. Restore the
datetime app. Visiting the datetime app shows the restored timezone as expected
and timedatectl on command line also immediately shows the expected timezone.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/datetime/__init__.py | 5 ++++-
plinth/modules/datetime/manifest.py | 7 ++++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/plinth/modules/datetime/__init__.py b/plinth/modules/datetime/__init__.py
index e51cd50cd..229e47fae 100644
--- a/plinth/modules/datetime/__init__.py
+++ b/plinth/modules/datetime/__init__.py
@@ -9,7 +9,7 @@ from django.utils.translation import gettext_lazy as _
from plinth import app as app_module
from plinth import menu
-from plinth.daemon import Daemon
+from plinth.daemon import Daemon, RelatedDaemon
from plinth.modules.backups.components import BackupRestore
from plinth.package import Packages
@@ -75,6 +75,9 @@ class DateTimeApp(app_module.App):
packages = Packages('packages-datetime', ['systemd-timesyncd'])
self.add(packages)
+ daemon = RelatedDaemon('daemon-datetime', 'systemd-timedated')
+ self.add(daemon)
+
if self._is_time_managed():
daemon = Daemon('daemon-datetime', 'systemd-timesyncd')
self.add(daemon)
diff --git a/plinth/modules/datetime/manifest.py b/plinth/modules/datetime/manifest.py
index 59f2d45f9..229b34d40 100644
--- a/plinth/modules/datetime/manifest.py
+++ b/plinth/modules/datetime/manifest.py
@@ -3,4 +3,9 @@
Application manifest for datetime.
"""
-backup = {'data': {'files': ['/etc/timezone']}}
+backup = {
+ 'data': {
+ 'files': ['/etc/localtime']
+ },
+ 'services': ['systemd-timedated'],
+}
From 694d73fbdbec4f154fdd12b3957f39af83133128 Mon Sep 17 00:00:00 2001
From: Sunil Mohan Adapa
Date: Tue, 4 Apr 2023 10:08:01 +0530
Subject: [PATCH 13/20] coturn: Prevent package removal when roundcube is
uninstalled
Closes: #2328.
Coturn depends on sqlite3 package. As sqlite3 is listed as a package in
roundcube, it is removed when roundcube is uninstalled. This results in the
removal of coturn as well. Prevent this by listing sqlite3 package explicitly in
coturn app.
Tests:
- Without the patch, install coturn and roundcube. When roundcube is
uninstalled, coturn package is no longer installed.
- Apply the patch, install coturn and roundcube. When roundcube is uninstalled,
coturn and sqlite3 packages are still installed.
Signed-off-by: Sunil Mohan Adapa
Reviewed-by: James Valleroy
---
plinth/modules/coturn/__init__.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/plinth/modules/coturn/__init__.py b/plinth/modules/coturn/__init__.py
index a3c424191..d3b549d52 100644
--- a/plinth/modules/coturn/__init__.py
+++ b/plinth/modules/coturn/__init__.py
@@ -59,7 +59,9 @@ class CoturnApp(app_module.App):
parent_url_name='apps')
self.add(menu_item)
- packages = Packages('packages-coturn', ['coturn'])
+ # Include sqlite3 to prevent removal of coturn from removal of
+ # roundcube.
+ packages = Packages('packages-coturn', ['coturn', 'sqlite3'])
self.add(packages)
firewall = Firewall('firewall-coturn', info.name,
From 4f0bb925c7a7ebd177d3aaf87199a2a6d2dbe3a8 Mon Sep 17 00:00:00 2001
From: Coucouf
Date: Fri, 7 Apr 2023 05:42:03 +0000
Subject: [PATCH 14/20] Translated using Weblate (French)
Currently translated at 100.0% (1486 of 1486 strings)
---
plinth/locale/fr/LC_MESSAGES/django.po | 77 +++++++++++++-------------
1 file changed, 37 insertions(+), 40 deletions(-)
diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po
index b6abc3eb6..67c38daff 100644
--- a/plinth/locale/fr/LC_MESSAGES/django.po
+++ b/plinth/locale/fr/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: FreedomBox UI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-13 21:32-0400\n"
-"PO-Revision-Date: 2022-10-30 11:00+0000\n"
+"PO-Revision-Date: 2023-04-07 23:10+0000\n"
"Last-Translator: Coucouf \n"
"Language-Team: French \n"
@@ -17,7 +17,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.14.2-dev\n"
+"X-Generator: Weblate 4.17-dev\n"
#: doc/dev/_templates/layout.html:11
msgid "Page source"
@@ -1746,7 +1746,7 @@ msgstr "GnuDIP"
#: plinth/modules/dynamicdns/forms.py:57
msgid "Other update URL"
-msgstr "Autre URL de mise à jour"
+msgstr "URL de mise à jour alternative"
#: plinth/modules/dynamicdns/forms.py:59
msgid "Service Type"
@@ -1977,11 +1977,11 @@ msgstr "Yaxim"
#: plinth/modules/ejabberd/manifest.py:55
msgid "Monal - XMPP Chat"
-msgstr ""
+msgstr "Monal − Tchat XMPP"
#: plinth/modules/ejabberd/manifest.py:64
msgid "Siskin IM"
-msgstr ""
+msgstr "Messagerie Siskin"
#: plinth/modules/ejabberd/manifest.py:73
msgid "Dino"
@@ -3349,7 +3349,7 @@ msgid ""
"Matrix user IDs will look like @username:domainname."
msgstr ""
"Le service Matrix doit être configuré pour un domaine défini. Les "
-"utilisateurs sur d’autres serveurs Matrix seront en mesure de joindre les "
+"utilisateurs d’autres serveurs Matrix seront en mesure de joindre les "
"utilisateurs de ce serveur grâce à ce nom de domaine. Les identifiants "
"utilisateur Matrix seront du type @identifiant:nomdedomaine."
@@ -4661,8 +4661,9 @@ msgid ""
"actions."
msgstr ""
"La description qui suit résume le mieux la manière dont votre %(box_name)s "
-"est connectée à votre réseau. Ces informations ne sont utilisées que pour "
-"suggérer d’autres actions de configuration nécessaires."
+"est connectée à votre réseau. Ce choix sert uniquement à vous suggérer les "
+"autres configurations nécessaires au bon fonctionnement de votre "
+"installation."
#: plinth/modules/networks/templates/network_topology_main.html:24
#, python-format
@@ -5263,9 +5264,9 @@ msgid ""
"protocol/port combinations that you are able to define here. For example, "
"HTTPS on ports other than 443 is known to cause problems."
msgstr ""
-"Avertissement :
le serveur frontal PageKite peut ne pas être "
-"compatible avec toutes les combinaisons de protocole et de port en cours de "
-"définition. Par exemple, l’utilisation de ports autre que 443 pour le "
+"Avertissement :
le serveur frontal PageKite peut ne pas être "
+"compatible avec toutes les combinaisons de protocole et de port que vous "
+"pouvez saisir ici. Par exemple, l’utilisation de ports autre que 443 pour le "
"protocole HTTPS est connu pour causer des problèmes."
#: plinth/modules/pagekite/utils.py:45
@@ -5425,11 +5426,12 @@ msgid ""
msgstr ""
"Aider les développeuses et développeurs Debian/{box_name} en participant au "
"concours de popularité. En activant cette option la liste des applis "
-"utilisées sur ce système sera soumis de manière anonyme au projet Debian "
+"utilisées sur ce système sera soumise de manière anonyme au projet Debian "
"chaque semaine. Les statistiques construites à partir de ces données sont "
"accessibles publiquement à l’adresse popcon.debian.org. Pour plus de confidentialité, la "
-"transmission a lieu au travers du réseau Tor lorsque l’appli Tor est activée."
+"transmission a lieu au travers du réseau Tor pourvu que l’appli Tor soit "
+"activée."
#: plinth/modules/privoxy/__init__.py:23
msgid ""
@@ -5975,9 +5977,9 @@ msgid ""
"attempts to the SSH server and other enabled password protected internet-"
"services."
msgstr ""
-"Lorsque cette option est activée, Fail2Ban limitera les tentatives "
-"d’intrusion par force brute sur le serveur SSH ainsi que sur les autres "
-"services Internet protégés par mot de passe et actifs."
+"Lorsque cette option est activée, Fail2Ban limitera les tentatives d’"
+"intrusion par force brute sur le serveur SSH ainsi que sur les autres "
+"services Internet actifs protégés par mot de passe."
#: plinth/modules/security/templates/security.html:12
#: plinth/modules/security/templates/security.html:14
@@ -6551,20 +6553,18 @@ msgid ""
"administration tasks, copy files or run other services using such "
"connections."
msgstr ""
-"Un serveur Secure Shell utilise le protocole secure shell pour accepter les "
-"connexions des ordinateurs distants. Un ordinateur distant autorisé peut "
-"effectuer des tâches d’administration, copier des fichiers ou bien faire "
-"fonctionner d’autres services en utilisant de telles connexions."
+"Un serveur Secure Shell utilise le protocole « secure shell » pour "
+"accepter les connexions d’ordinateurs distants. Un ordinateur distant "
+"autorisé peut effectuer des tâches d’administration, copier des fichiers ou "
+"bien faire fonctionner d’autres services en utilisant ce type de connexion."
#: plinth/modules/ssh/__init__.py:41
msgid "Secure Shell (SSH) Server"
msgstr "Serveur Secure Shell (SSH)"
#: plinth/modules/ssh/__init__.py:61
-#, fuzzy
-#| msgid "Secure Shell (SSH)"
msgid "Remotely login using Secure Shell (SSH)"
-msgstr "Shell sécurisé (SSH)"
+msgstr "Se connecter à distance par shell sécurisé (SSH)"
#: plinth/modules/ssh/forms.py:13
msgid "Disable password authentication"
@@ -6582,7 +6582,7 @@ msgstr ""
#: plinth/modules/ssh/forms.py:21
msgid "Allow all users to login remotely"
-msgstr ""
+msgstr "Autoriser les utilisateurs et utilisatrices à se connecter à distance"
#: plinth/modules/ssh/forms.py:22
msgid ""
@@ -6590,6 +6590,10 @@ msgid ""
"disabled, only users of groups root, admin and freedombox-ssh can login via "
"SSH."
msgstr ""
+"Autorise n'importe quel utilisateur ou utilisatrice ayant un compte actif à "
+"se connecter via SSH. Si désactivé, seuls les utilisateurs et utilisatrices "
+"des groupes « root », « admin » et « freedombox-"
+"ssh » peuvent se connecter via SSH."
#: plinth/modules/ssh/templates/ssh.html:11
msgid "Server Fingerprints"
@@ -6871,11 +6875,10 @@ msgid ""
"deletion of files on one device will be automatically replicated on all "
"other devices that also run Syncthing."
msgstr ""
-"Syncthing est une application synchroniser des fichiers entre plusieurs "
+"Syncthing est une application pour synchroniser des fichiers entre plusieurs "
"appareils, par exemple votre ordinateur de bureau et votre téléphone "
"mobile. Création, modification ou suppression de fichiers sur un appareil "
-"seront automatiquement répliquées aux autres appareils qui utilisent "
-"Syncthing."
+"sont automatiquement répliquées aux autres appareils qui utilisent Syncthing."
#: plinth/modules/syncthing/__init__.py:27
#, python-brace-format
@@ -7242,8 +7245,8 @@ msgid ""
msgstr ""
"L’espace disponible sur la partition racine est insuffisant pour lancer la "
"mise à niveau de la distribution. Veuillez vous assurer qu’au moins 5 Go "
-"sont disponibles. Si activée, la mise à niveau automatique de la "
-"distribution sera retentée dans 24H."
+"sont disponibles. Si la mise à niveau automatique de la distribution est "
+"activée, elle sera retentée dans 24H."
#: plinth/modules/upgrades/__init__.py:203
msgid "Distribution update started"
@@ -8356,10 +8359,9 @@ msgstr ""
"Vous n’avez pas la permission d’accéder %(request_path)s sur ce serveur."
#: plinth/templates/404.html:10
-#, fuzzy, python-format
-#| msgid "Public key for this %(box_name)s:"
+#, python-format
msgid "Page not found - %(box_name)s"
-msgstr "Clé publique de cette %(box_name)s :"
+msgstr "Page introuvable − %(box_name)s :"
#: plinth/templates/404.html:18
msgid "404"
@@ -8714,13 +8716,11 @@ msgstr "Installer"
#: plinth/templates/setup.html:68
msgid "Update"
-msgstr "Mises à jour"
+msgstr "Mettre à jour"
#: plinth/templates/toolbar.html:39 plinth/templates/toolbar.html:40
-#, fuzzy
-#| msgid "Backups"
msgid "Backup"
-msgstr "Sauvegardes"
+msgstr "Sauvegarder"
#: plinth/templates/toolbar.html:51 plinth/templates/toolbar.html:52
#: plinth/templates/uninstall.html:36
@@ -8733,11 +8733,8 @@ msgid "Uninstall App %(app_name)s?"
msgstr "Désinstaller l’appli %(app_name)s ?"
#: plinth/templates/uninstall.html:17
-#, fuzzy
-#| msgid "Uninstalling an app is an exprimental feature."
msgid "Uninstalling an app is an experimental feature."
-msgstr ""
-"La désinstallation d’applications est une fonctionnalité expérimentale."
+msgstr "La désinstallation d’applications est une fonctionnalité expérimentale."
#: plinth/templates/uninstall.html:23
msgid ""
From ee4c9db6158ae8675a82a44ab217d23bce2dbb77 Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Fri, 7 Apr 2023 11:00:22 -0400
Subject: [PATCH 15/20] datetime: Use unique component ID for related daemon
The original change worked ok in a container, but failed in
virtualbox. This was due to the component being replaced by the Daemon
component that had the same ID, on systems where time is managed.
Signed-off-by: James Valleroy
Reviewed-by: Sunil Mohan Adapa
---
plinth/modules/datetime/__init__.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/plinth/modules/datetime/__init__.py b/plinth/modules/datetime/__init__.py
index 229e47fae..209154ba4 100644
--- a/plinth/modules/datetime/__init__.py
+++ b/plinth/modules/datetime/__init__.py
@@ -75,7 +75,8 @@ class DateTimeApp(app_module.App):
packages = Packages('packages-datetime', ['systemd-timesyncd'])
self.add(packages)
- daemon = RelatedDaemon('daemon-datetime', 'systemd-timedated')
+ daemon = RelatedDaemon('daemon-datetime-timedated',
+ 'systemd-timedated')
self.add(daemon)
if self._is_time_managed():
From 53a5394942bc0afb231bbd1f24a1742d0b36f725 Mon Sep 17 00:00:00 2001
From: Veiko Aasa
Date: Sat, 8 Apr 2023 10:18:41 +0300
Subject: [PATCH 16/20] gitweb: Disable snapshot feature
Closes: #2335.
Signed-off-by: Veiko Aasa
Reviewed-by: Sunil Mohan Adapa
---
plinth/modules/gitweb/data/etc/gitweb-freedombox.conf | 3 +++
1 file changed, 3 insertions(+)
diff --git a/plinth/modules/gitweb/data/etc/gitweb-freedombox.conf b/plinth/modules/gitweb/data/etc/gitweb-freedombox.conf
index 332fd327c..386910f6e 100644
--- a/plinth/modules/gitweb/data/etc/gitweb-freedombox.conf
+++ b/plinth/modules/gitweb/data/etc/gitweb-freedombox.conf
@@ -40,6 +40,9 @@ $feature{'pickaxe'}{'default'} = [1];
# enable syntax highlighting
$feature{'highlight'}{'default'} = [1];
+# disable snapshots
+$feature{'snapshot'}{'default'} = [];
+
# do not recursively scan for Git repositories
our $project_maxdepth = 1;
From cd2727c98bce0f797336ab4b429537f7c43b99c1 Mon Sep 17 00:00:00 2001
From: Veiko Aasa
Date: Sat, 8 Apr 2023 10:29:29 +0300
Subject: [PATCH 17/20] gitweb: Make globally configured features overridable
per-repository
Signed-off-by: Veiko Aasa
Reviewed-by: Sunil Mohan Adapa
---
plinth/modules/gitweb/data/etc/gitweb-freedombox.conf | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/plinth/modules/gitweb/data/etc/gitweb-freedombox.conf b/plinth/modules/gitweb/data/etc/gitweb-freedombox.conf
index 386910f6e..9bed257f1 100644
--- a/plinth/modules/gitweb/data/etc/gitweb-freedombox.conf
+++ b/plinth/modules/gitweb/data/etc/gitweb-freedombox.conf
@@ -33,15 +33,19 @@ $feature{'pathinfo'}{'default'} = [1];
# enable git blame
$feature{'blame'}{'default'} = [1];
+$feature{'blame'}{'override'} = 1;
# enable pickaxe search
$feature{'pickaxe'}{'default'} = [1];
+$feature{'pickaxe'}{'override'} = 1;
# enable syntax highlighting
$feature{'highlight'}{'default'} = [1];
+$feature{'highlight'}{'override'} = 1;
# disable snapshots
$feature{'snapshot'}{'default'} = [];
+$feature{'snapshot'}{'override'} = 1;
# do not recursively scan for Git repositories
our $project_maxdepth = 1;
From eda9c6a846aa37b05ffb05a05471e4be0a55c9e1 Mon Sep 17 00:00:00 2001
From: 109247019824
Date: Mon, 10 Apr 2023 04:46:20 +0000
Subject: [PATCH 18/20] Translated using Weblate (Bulgarian)
Currently translated at 46.2% (688 of 1486 strings)
---
plinth/locale/bg/LC_MESSAGES/django.po | 62 +++++++++++++++++---------
1 file changed, 41 insertions(+), 21 deletions(-)
diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po
index e31f1b53a..7ff09a5a5 100644
--- a/plinth/locale/bg/LC_MESSAGES/django.po
+++ b/plinth/locale/bg/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-13 21:32-0400\n"
-"PO-Revision-Date: 2023-04-06 18:52+0000\n"
+"PO-Revision-Date: 2023-04-11 00:02+0000\n"
"Last-Translator: 109247019824 \n"
"Language-Team: Bulgarian \n"
@@ -3555,62 +3555,72 @@ msgstr "Метод за адресиране на IPv6"
msgid ""
"Automatic: Configure automatically, use Internet connection from this network"
msgstr ""
+"Автоматично: Настройва се автоматично, използва се интернет връзка от тази "
+"мрежа"
#: plinth/modules/networks/forms.py:82
msgid ""
"Automatic (DHCP only): Configure automatically, use Internet connection from "
"this network"
msgstr ""
+"Автоматично (само DHCP): Настройва се автоматично, използва се интернет "
+"връзка от тази мрежа"
#: plinth/modules/networks/forms.py:87
msgid "Ignore: Ignore this addressing method"
-msgstr ""
+msgstr "Пренебрегнато: Методът на адресиране се пренебрегва"
#: plinth/modules/networks/forms.py:92
msgid "Prefix"
-msgstr ""
+msgstr "Наставка"
#: plinth/modules/networks/forms.py:93
msgid "Value between 1 and 128."
-msgstr ""
+msgstr "Стойността е между 1 и 128."
#: plinth/modules/networks/forms.py:101
msgid ""
"Optional value. If this value is given and IPv6 addressing method is "
"\"Automatic\", the DNS Servers provided by a DHCP server will be ignored."
msgstr ""
+"Незадължителна стойност. Ако стойността е зададена и методът за адресиране "
+"на IPv6 е „Автоматичен“, сървърите на DNS, предоставени от DHCP, ще бъдат "
+"пренебрегнати."
#: plinth/modules/networks/forms.py:107
msgid ""
"Optional value. If this value is given and IPv6 Addressing Method is "
"\"Automatic\", the DNS Servers provided by a DHCP server will be ignored."
msgstr ""
+"Незадължителна стойност. Ако стойността е зададена и методът за адресиране "
+"на IPv6 е „Автоматичен“, сървърите на DNS, предоставени от DHCP, ще бъдат "
+"пренебрегнати."
#: plinth/modules/networks/forms.py:120
msgid "-- select --"
-msgstr ""
+msgstr "— изберете —"
#: plinth/modules/networks/forms.py:247
#: plinth/modules/networks/templates/connection_show.html:135
msgid "SSID"
-msgstr ""
+msgstr "SSID"
#: plinth/modules/networks/forms.py:248
msgid "The visible name of the network."
-msgstr ""
+msgstr "Видимото име на мрежата."
#: plinth/modules/networks/forms.py:250
#: plinth/modules/networks/templates/connection_show.html:148
msgid "Mode"
-msgstr ""
+msgstr "Режим"
#: plinth/modules/networks/forms.py:250
msgid "Infrastructure"
-msgstr ""
+msgstr "Инфраструктура"
#: plinth/modules/networks/forms.py:251
msgid "Access Point"
-msgstr ""
+msgstr "Точка за достъп"
#: plinth/modules/networks/forms.py:252
msgid "Ad-hoc"
@@ -3618,34 +3628,36 @@ msgstr ""
#: plinth/modules/networks/forms.py:254
msgid "Frequency Band"
-msgstr ""
+msgstr "Честотна лента"
#: plinth/modules/networks/forms.py:254
msgid "Automatic"
-msgstr ""
+msgstr "Автоматично"
#: plinth/modules/networks/forms.py:255
msgid "A (5 GHz)"
-msgstr ""
+msgstr "A (5 ГХц)"
#: plinth/modules/networks/forms.py:256
msgid "B/G (2.4 GHz)"
-msgstr ""
+msgstr "B/G (2,4 ГХц)"
#: plinth/modules/networks/forms.py:258
#: plinth/modules/networks/templates/connection_show.html:162
msgid "Channel"
-msgstr ""
+msgstr "Канал"
#: plinth/modules/networks/forms.py:259
msgid ""
"Optional value. Wireless channel in the selected frequency band to restrict "
"to. Blank or 0 value means automatic selection."
msgstr ""
+"Незадължителна стойност. Ограничение на безжичния канал в избраната честотна "
+"лента. Празна стойност или 0 означава автоматичен избор."
#: plinth/modules/networks/forms.py:264
msgid "BSSID"
-msgstr ""
+msgstr "BSSID"
#: plinth/modules/networks/forms.py:265
msgid ""
@@ -3653,29 +3665,34 @@ msgid ""
"an access point, connect only if the BSSID of the access point matches the "
"one provided. Example: 00:11:22:aa:bb:cc."
msgstr ""
+"Незадължителна стойност. Уникален идентификатор за точката за достъп. Когато "
+"се свързвате с точка за достъп, се свързвайте само ако BSSID на точката за "
+"достъп съвпада с предоставения. Пример: 00:11:22:aa:bb:cc."
#: plinth/modules/networks/forms.py:271
msgid "Authentication Mode"
-msgstr ""
+msgstr "Режим на удостоверяване"
#: plinth/modules/networks/forms.py:272
msgid ""
"Select WPA if the wireless network is secured and requires clients to have "
"the password to connect."
msgstr ""
+"Изберете WPA, ако безжичната мрежа е защитена и изисква от клиентите да "
+"разполагат с паролата за свързване."
#: plinth/modules/networks/forms.py:274
msgid "WPA"
-msgstr ""
+msgstr "WPA"
#: plinth/modules/networks/forms.py:274
msgid "Open"
-msgstr ""
+msgstr "Отворена"
#: plinth/modules/networks/forms.py:310
#, python-brace-format
msgid "Specify how your {box_name} is connected to your network"
-msgstr ""
+msgstr "Посочете как устройството {box_name} е свързано с мрежата"
#: plinth/modules/networks/forms.py:317
#, python-brace-format
@@ -3684,6 +3701,9 @@ msgid ""
"Internet connection from your router via Wi-Fi or Ethernet cable. This is a "
"typical home setup.
"
msgstr ""
+"Свързано към маршрутизатор {box_name} получава "
+"интернет от маршрутизатор безжично или чрез кабел. Това е типичната домашна "
+"постройка.
"
#: plinth/modules/networks/forms.py:324
#, python-brace-format
@@ -4393,7 +4413,7 @@ msgstr ""
#: plinth/modules/networks/views.py:112
msgid "infrastructure"
-msgstr ""
+msgstr "инфраструктура"
#: plinth/modules/networks/views.py:113
msgid "access point"
From 7748499e3f516f0df15d58e2c5752e14db0454e3 Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Mon, 10 Apr 2023 20:33:55 -0400
Subject: [PATCH 19/20] doc: Fetch latest manual
Signed-off-by: James Valleroy
---
doc/manual/en/GitWeb.raw.wiki | 14 ++++++++++++++
doc/manual/en/OpenVPN.raw.wiki | 2 +-
doc/manual/en/ReleaseNotes.raw.wiki | 23 +++++++++++++++++++++++
doc/manual/es/GitWeb.raw.wiki | 19 ++++++++++++++++++-
doc/manual/es/OpenVPN.raw.wiki | 2 +-
doc/manual/es/ReleaseNotes.raw.wiki | 23 +++++++++++++++++++++++
6 files changed, 80 insertions(+), 3 deletions(-)
diff --git a/doc/manual/en/GitWeb.raw.wiki b/doc/manual/en/GitWeb.raw.wiki
index ccc91e138..7daaa2248 100644
--- a/doc/manual/en/GitWeb.raw.wiki
+++ b/doc/manual/en/GitWeb.raw.wiki
@@ -50,6 +50,20 @@ GNOME "Passwords and Keys" utility can be used to store the username and passwor
Though your repositories are primarily hosted on your own !FreedomBox, you can
configure a repository on another Git hosting system like GitLab as a mirror.
+=== Enabling/Disabling Features ===
+
+In !FreedomBox, some of the default features of gitweb have been changed:
+ * Enabled: Blame feature to show what revision and author last modified each line of a file
+ * Enabled: Pickaxe feature to list the commits that introduced or removed a given string
+ * Enabled: Highlight feature to perform syntax highlighting on blobs
+ * Disabled: Snapshot feature that provides a download of a compressed tar file for a given revision (due to high resource usage).
+
+These features can be changed on a per-repository bases by an administrator by editing the git configuration file for the repository on !FreedomBox. See manual page for gitweb.conf(5) for more details on syntax and features. For example, to re-enable the snapshot feature on `myrepo` repository, login to a !FreedomBox terminal via SSH or web console as administrator and edit the file `/var/lib/git/myrepo/config` to contain the following section:
+
+{{{
+[gitweb]
+snapshot = tgz
+}}}
=== External links ===
diff --git a/doc/manual/en/OpenVPN.raw.wiki b/doc/manual/en/OpenVPN.raw.wiki
index 29178b110..df67dcd3f 100644
--- a/doc/manual/en/OpenVPN.raw.wiki
+++ b/doc/manual/en/OpenVPN.raw.wiki
@@ -121,7 +121,7 @@ If you get an error such as `configuration error: invalid 1th argument to “pro
=== Accessing internal services ===
-After connecting to OpenVPN, you will be able to access !FreedomBox services that are only meant to be accessed on internal networks. This is in addition to being able to access external services. This can be done by using the IP address 10.91.0.1 as the host name for these services.
+After connecting to OpenVPN, you will be able to access !FreedomBox services that are only meant to be accessed on internal networks. This is in addition to being able to access external services. This can be done by using the IP address 10.91.0.1 as the host name for these services (for example, use smb://10.91.0.1 instead of smb://freedombox.local to access Samba shares).
The following services are known to '''work''':
* [[FreedomBox/Manual/Privoxy|Privoxy]],
diff --git a/doc/manual/en/ReleaseNotes.raw.wiki b/doc/manual/en/ReleaseNotes.raw.wiki
index c457e3f59..677b443a7 100644
--- a/doc/manual/en/ReleaseNotes.raw.wiki
+++ b/doc/manual/en/ReleaseNotes.raw.wiki
@@ -8,6 +8,29 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
+== FreedomBox 23.6.1 (2023-04-10) ==
+
+ * coturn: Prevent package removal when roundcube is uninstalled
+ * datetime: Re-implement backup/restore for timezone
+ * gitweb: Disable snapshot feature
+ * gitweb: Make globally configured features overridable per-repository
+ * locale: Update translations for Bulgarian, French
+
+== FreedomBox 23.7 (2023-03-27) ==
+
+=== Highlights ===
+
+ * matrixsynapse: Add token based registration verification
+ * mediawiki: Allow setting site language code
+
+=== Other Changes ===
+
+ * container: Fix resizing disk image containing multiple partitions
+ * container: Force pip to install packages to system environment
+ * container: Increase wait time to accommodate slower architectures
+ * locale: Update translations for Bulgarian
+ * tests: functional: Fix setting first ethernet connection as internal
+
== FreedomBox 23.6 (2023-03-13) ==
* /etc/issue: Update message to reflect that all users can login
diff --git a/doc/manual/es/GitWeb.raw.wiki b/doc/manual/es/GitWeb.raw.wiki
index a87e60e8f..f0953bad3 100644
--- a/doc/manual/es/GitWeb.raw.wiki
+++ b/doc/manual/es/GitWeb.raw.wiki
@@ -36,10 +36,27 @@ Tu nombre de usuario y contraseña se cifrarán. Quien monitorize el tráfico de
'''Para usuarios de GNOME (Avanzado)'''
La utilidad "Contraseñas y claves" de GNOME se puede emplear para almacenar el usuario y su contraseña. Más detalles de cómo hacerlo en esta [[https://stackoverflow.com/questions/36585496/error-when-using-git-credential-helper-with-gnome-keyring-as-sudo/40312117#40312117|respuesta en StackOverflow]].
-=== Réplicas Espejo ===
+=== Réplicas espejo ===
Aunque tus repositorios se albergan principalmente en tu propia !FreedomBox puedes configurar un repositorio en otro servicio de alojamiento Git como GitLab a modo de copia espejo.
+=== (Des)habilitar funciones ===
+
+Algunas funciones que en gitweb vienen de serie se han cambiado en !FreedomBox:
+ * Habilitada: Funcionalidad ''blame'' para mostrar qué quién y en qué revisión modificó cada línea de un fichero.
+ * Habilitada: Funcionalidad ''pickaxe'' para listar los commits que introdujeron o eliminaron una cadena de texto dada.
+ * Habilitada: Funcionalidad de resaltado de sintaxis para los blobs.
+ * Deshabilitada: Funcionalidad de instantánea que descarga un fichero comprimido tar con una revisión dada (por su alto consumo de recursos).
+
+Un administrador puede ajustar estas selecciones editando el fichero de configuration de git de cada repositorio en !FreedomBox. Más detalles de sintaxis y funciones en la página man de gitweb.conf(5).
+Por ejemplo, para rehabilitar las instantánes en el repositorio `mirepo`, ingresa como administrador al terminal de !FreedomBox por SSH o consola web y edita el fichero `/var/lib/git/mirepo/config`
+para que contenga la sección siguiente:
+
+ {{{
+[gitweb]
+snapshot = tgz
+}}}
+
=== Enlaces externos ===
* Documentación de uso: https://git-scm.com/docs/gitweb
diff --git a/doc/manual/es/OpenVPN.raw.wiki b/doc/manual/es/OpenVPN.raw.wiki
index 40043883e..f266eb0a1 100644
--- a/doc/manual/es/OpenVPN.raw.wiki
+++ b/doc/manual/es/OpenVPN.raw.wiki
@@ -119,7 +119,7 @@ $ sudo nmcli connection import type openvpn file /ruta/a/.ovpn
=== Acceso a servicios internos ===
-Tras conectar por OpenVPN, podrás acceder a algunos servicios !FreedomBox restringidos a acceso interno, además de a los de acceso externo. Esto se puede hacer usando la dirección IP 10.91.0.1 como hostname para esos servicios.
+Tras conectar por OpenVPN, podrás acceder a algunos servicios !FreedomBox restringidos a acceso interno, además de a los de acceso externo. Esto se puede hacer usando la dirección IP 10.91.0.1 como hostname para esos servicios. (Por ejemplo, usa `smb://10.91.0.1` en vez de `smb://freedombox.local` para acceder a carpetas compartidas Samba).
Los siguientes servicios '''funcionan''' con OpenVPN:
* [[es/FreedomBox/Manual/Privoxy|Privoxy]],
diff --git a/doc/manual/es/ReleaseNotes.raw.wiki b/doc/manual/es/ReleaseNotes.raw.wiki
index c457e3f59..677b443a7 100644
--- a/doc/manual/es/ReleaseNotes.raw.wiki
+++ b/doc/manual/es/ReleaseNotes.raw.wiki
@@ -8,6 +8,29 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
+== FreedomBox 23.6.1 (2023-04-10) ==
+
+ * coturn: Prevent package removal when roundcube is uninstalled
+ * datetime: Re-implement backup/restore for timezone
+ * gitweb: Disable snapshot feature
+ * gitweb: Make globally configured features overridable per-repository
+ * locale: Update translations for Bulgarian, French
+
+== FreedomBox 23.7 (2023-03-27) ==
+
+=== Highlights ===
+
+ * matrixsynapse: Add token based registration verification
+ * mediawiki: Allow setting site language code
+
+=== Other Changes ===
+
+ * container: Fix resizing disk image containing multiple partitions
+ * container: Force pip to install packages to system environment
+ * container: Increase wait time to accommodate slower architectures
+ * locale: Update translations for Bulgarian
+ * tests: functional: Fix setting first ethernet connection as internal
+
== FreedomBox 23.6 (2023-03-13) ==
* /etc/issue: Update message to reflect that all users can login
From e25468c07d777a3e7507211e6941f70eab4f7dff Mon Sep 17 00:00:00 2001
From: James Valleroy
Date: Mon, 10 Apr 2023 20:35:15 -0400
Subject: [PATCH 20/20] Release v23.6.1 to unstable
Signed-off-by: James Valleroy
---
debian/changelog | 33 +++++++++++++++++++++++++++++++++
plinth/__init__.py | 2 +-
2 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/debian/changelog b/debian/changelog
index 79ba1531a..16c46dbbd 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,36 @@
+freedombox (23.6.1) unstable; urgency=medium
+
+ [ 109247019824 ]
+ * Translated using Weblate (Bulgarian)
+ * Translated using Weblate (Bulgarian)
+ * Translated using Weblate (Bulgarian)
+ * Translated using Weblate (Bulgarian)
+
+ [ Veiko Aasa ]
+ * container: Force pip to install packages to system environment
+ * tests: functional: Fix setting first ethernet connection as internal
+ * gitweb: Disable snapshot feature
+ * gitweb: Make globally configured features overridable per-repository
+
+ [ Sunil Mohan Adapa ]
+ * container: Fix resizing disk image containing multiple partitions
+ * container: Increase wait time to accommodate slower architectures
+ * tests: Don't error during collection if selenium is not installed
+ * tests: functional: Make install script work for Bullseye
+ * datetime: Re-implement backup/restore for timezone
+ * coturn: Prevent package removal when roundcube is uninstalled
+
+ [ James Valleroy ]
+ * HACKING: Force pip to install packages to system environment
+ * ci: Force pip install for functional tests
+ * datetime: Use unique component ID for related daemon
+ * doc: Fetch latest manual
+
+ [ Coucouf ]
+ * Translated using Weblate (French)
+
+ -- James Valleroy Mon, 10 Apr 2023 20:34:35 -0400
+
freedombox (23.6) unstable; urgency=medium
[ Sunil Mohan Adapa ]
diff --git a/plinth/__init__.py b/plinth/__init__.py
index 5420964b9..5e52acec7 100644
--- a/plinth/__init__.py
+++ b/plinth/__init__.py
@@ -3,4 +3,4 @@
Package init file.
"""
-__version__ = '23.6'
+__version__ = '23.6.1'