freedombox Debian release 23.6.1

-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAmQ0sYUACgkQd8DHXntl
 CAgVVw/+Ojbno3+Xe+pixypuQV4QCe+6/+/e3ha474mYax9KiB2Wlrp49hltAiIy
 WBBTrpdTFfxLHvIQo1LCNwTbfo3NR3vtPi/HquO2bR2twQA8i+GF1y/MKxoXvDZk
 xy8e7B6RLiRY3vH70GFMo4V4EQJIjOwD/RN6TvSt/+wJ71z2aLXJtLx2AJmWLmrN
 jvSHv2YkdQbyDcKOA8zU9zTMPPJUZnjD+fRP4fOIEVw2K//Rfpyy5fc3gWbWRSWO
 424wtBTa0ZouN10gMLwwePR1JCqOxNkkKaBqRIJbk/Z14L+8h5Mrqb3grKoTA3EQ
 bvdUDjLX7KiI91OsxPcKXjHebneEudteUhAjNahzQNcH7pkVbNZIdWdT5asCkLaq
 PVI+8sxaG5IcX/6Q9Nwt7pOLhwAbscOebEzWtiNpflnYWstOngL5Ly1pbswLO63g
 TQD8qILIwaOwbU8u5PiFfZfjjO7SQLAkr949AjbQ8CTGuZghY21z5eHXvmqQZg6f
 gLbI0q6CAshBI4Hm2WJgcIr6Z6+vrnX7leQadXYYPKSy9wJIpoeKhSEYuVMTLgkw
 I6fjOAiimq7eX4IDmpLB6zYxT2HwFSnWN86j60aHYNK+jprV7Sxu15z6oSZvUumj
 6iMBVCSd4kebO1GmKsd4HolNcPKdw3zCqI6JGarttepp73em6+I=
 =BAxm
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAmRPqecWHGp2YWxsZXJv
 eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICH+6D/91yVu6v0uf19z4ZesZAxjAb3+3
 OPKsodW/iboinykofBcnkl/ngmwebrL8AvngvQrw6ZsLmq/3bZknCJI9vrV/Q79G
 gxi70uXMRdPgEt9h9oeThpgtzH+VeSlqnEPy3O2V6rKvBpr1whHOghg9HjSwqaL2
 wfVrl1Rw1YotEGDP+mEbYtGC5kGbBIG0K8F4+WCBDOnhMEXvnk7FHiPf/6/B5jSz
 mS5SOfRd1obukTary+1mhbtgCfmTczOHvgh2c2q/yq/rjvlSkv+/demL9CiLh0Mj
 DXwdeuYSlfhw0304BQm36oIS0I0m0RHA1bGIh06GkItPUfO0Vt3b6kcrPnlIe/z3
 Xru3loAl+VaN3s5U6qMfHwSlFW8rBwJ4uuEOdiKcM/LKHh8UE7t3YRC4uMVngm0F
 CUPOKJpymL8tZwx0pcIun6S2Q5gPY5inkg5uSAuopvJW1qRkPJrVtjRIotlH2Kyf
 kdFTmgqxS2LH7iuBoUDdr8rb5xKbbgD/7/9mieDDs5mjB7rb8iQI2fhHimVxKqYX
 bd0bGcXccEbY3TKHs3jhL+URejsB8wRHgpWRxPpF1BEetpLEjTpDcOZFrNJZyOX5
 oT/JPkDjevMMs5jRh69kdsiuZpHlqvD30Cvv8y5CAaacWbYMVo79r3duhra+k3my
 x68hT6Tdwyblp63FFQ==
 =uK8v
 -----END PGP SIGNATURE-----

Merge tag 'v23.6.1' into debian/bullseye-backports

freedombox Debian release 23.6.1

Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
James Valleroy 2023-05-01 08:00:37 -04:00
commit 96af80bf72
20 changed files with 315 additions and 111 deletions

View File

@ -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'

View File

@ -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
```

View File

@ -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):

View File

@ -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(
@ -943,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

33
debian/changelog vendored
View File

@ -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 <jvalleroy@mailbox.org> Mon, 10 Apr 2023 20:34:35 -0400
freedombox (23.6~bpo11+1) bullseye-backports; urgency=medium
* Rebuild for bullseye-backports.

View File

@ -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 ===

View File

@ -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]],

View File

@ -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

View File

@ -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

View File

@ -119,7 +119,7 @@ $ sudo nmcli connection import type openvpn file /ruta/a/<USUARIO>.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]],

View File

@ -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

View File

@ -3,4 +3,4 @@
Package init file.
"""
__version__ = '23.6'
__version__ = '23.6.1'

View File

@ -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-04-11 00:02+0000\n"
"Last-Translator: 109247019824 <stoyan@gmx.com>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/freedombox/"
"freedombox/bg/>\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.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."
@ -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 <a href=\"%(upgrades_url)s\">available</"
"a>."
msgstr ""
"<a href=\"%(upgrades_url)s\">Налично е ново издание</a> на %(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 <a "
"href=\"https://wiki.debian.org/FreedomBox\">%(box_name)s Wiki</a>."
msgstr ""
"За повече информация относно проекта %(box_name)s посетете <a href=\"https"
"://wiki.debian.org/FreedomBox\">документацията на %(box_name)s</a>."
#: 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,167 +3432,195 @@ 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 ""
"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 ""
"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"
@ -3593,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 ""
@ -3628,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
@ -3659,6 +3701,9 @@ msgid ""
"Internet connection from your router via Wi-Fi or Ethernet cable. This is a "
"typical home setup.</p>"
msgstr ""
"Свързано към маршрутизатор <p class=\"help-block\">{box_name} получава "
"интернет от маршрутизатор безжично или чрез кабел. Това е типичната домашна "
"постройка.</p>"
#: plinth/modules/networks/forms.py:324
#, python-brace-format
@ -4368,7 +4413,7 @@ msgstr ""
#: plinth/modules/networks/views.py:112
msgid "infrastructure"
msgstr ""
msgstr "инфраструктура"
#: plinth/modules/networks/views.py:113
msgid "access point"
@ -4712,13 +4757,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 +4781,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 +4802,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

View File

@ -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 <coucouf@coucouf.fr>\n"
"Language-Team: French <https://hosted.weblate.org/projects/freedombox/"
"freedombox/fr/>\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 <em>@username:domainname</em>."
msgstr ""
"Le service Matrix doit être configuré pour un domaine défini. Les "
"utilisateurs sur dautres serveurs Matrix seront en mesure de joindre les "
"utilisateurs dautres 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 <em>@identifiant:nomdedomaine</em>."
@ -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 dautres 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 ""
"<b>Avertissement :</b><br>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, lutilisation de ports autre que 443 pour le "
"<b>Avertissement&nbsp;:</b><br>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, lutilisation 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 à ladresse <a href=\"https://popcon.debian.org/\" "
"target=\"_blank\">popcon.debian.org</a>. Pour plus de confidentialité, la "
"transmission a lieu au travers du réseau Tor lorsque lappli Tor est activée."
"transmission a lieu au travers du réseau Tor pourvu que lappli 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 "
"dintrusion 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 dadministration, copier des fichiers ou bien faire "
"fonctionner dautres services en utilisant de telles connexions."
"Un serveur Secure Shell utilise le protocole «&nbsp;secure shell&nbsp;» pour "
"accepter les connexions dordinateurs distants. Un ordinateur distant "
"autorisé peut effectuer des tâches dadministration, copier des fichiers ou "
"bien faire fonctionner dautres 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 «&nbsp;root&nbsp;», «&nbsp;admin&nbsp;» et «&nbsp;freedombox-"
"ssh&nbsp;» 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 ""
"Lespace disponible sur la partition racine est insuffisant pour lancer la "
"mise à niveau de la distribution. Veuillez vous assurer quau 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 navez pas la permission daccé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&nbsp;:"
#: 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 <em>%(app_name)s</em>?"
msgstr "Désinstaller lappli <em>%(app_name)s</em>?"
#: 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 dapplications est une fonctionnalité expérimentale."
msgstr "La désinstallation dapplications est une fonctionnalité expérimentale."
#: plinth/templates/uninstall.html:23
msgid ""

View File

@ -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,

View File

@ -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,10 @@ class DateTimeApp(app_module.App):
packages = Packages('packages-datetime', ['systemd-timesyncd'])
self.add(packages)
daemon = RelatedDaemon('daemon-datetime-timedated',
'systemd-timedated')
self.add(daemon)
if self._is_time_managed():
daemon = Daemon('daemon-datetime', 'systemd-timesyncd')
self.add(daemon)

View File

@ -3,4 +3,9 @@
Application manifest for datetime.
"""
backup = {'data': {'files': ['/etc/timezone']}}
backup = {
'data': {
'files': ['/etc/localtime']
},
'services': ['systemd-timedated'],
}

View File

@ -33,12 +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;

View File

@ -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]

View File

@ -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 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"
(