Compare commits

..

No commits in common. "0e773e7ad06c06586b5e67afc546bedde48975d1" and "cfc5d3acab0db5b67cb790ad4e03647649a21e51" have entirely different histories.

15 changed files with 192 additions and 219 deletions

9
Vagrantfile vendored
View File

@ -6,7 +6,8 @@ require 'etc'
Vagrant.configure(2) do |config|
config.vm.box = "freedombox/freedombox-testing-dev"
config.vm.network "public_network"
config.vm.network "forwarded_port", guest: 443, host: 4430
config.vm.network "forwarded_port", guest: 445, host: 4450
config.vm.synced_folder ".", "/freedombox", owner: "plinth", group: "plinth"
config.vm.provider "virtualbox" do |vb|
vb.cpus = Etc.nprocessors
@ -27,11 +28,7 @@ Vagrant.configure(2) do |config|
SHELL
config.vm.provision "tests", run: "never", type: "shell", path: "plinth/tests/functional/install.sh"
config.vm.post_up_message = "FreedomBox virtual machine is ready
for development. To get the IP address:
$ vagrant ssh
$ ip address show
FreedomBox interface will be available at https://<ip address>/freedombox
for development. Plinth will be available at https://localhost:4430/freedombox
(with an invalid SSL certificate). To watch logs:
$ vagrant ssh
$ sudo freedombox-logs

View File

@ -227,7 +227,6 @@ fi
echo "> In machine: Upgrade packages"
apt-get update
apt-mark hold freedombox freedombox-doc-en freedombox-doc-es
DEBIAN_FRONTEND=noninteractive apt-get -yq --with-new-pkgs upgrade
# Install requirements for tests if not already installed as root

35
debian/changelog vendored
View File

@ -1,38 +1,3 @@
freedombox (26.4.2) unstable; urgency=medium
[ Jiří Podhorecký ]
* Translated using Weblate (Czech)
[ OwlGale ]
* Translated using Weblate (Russian)
-- James Valleroy <jvalleroy@mailbox.org> Sun, 08 Mar 2026 15:27:13 -0400
freedombox (26.4.1) unstable; urgency=high
[ 大王叫我来巡山 ]
* Translated using Weblate (Chinese (Simplified Han script))
[ Besnik Bleta ]
* Translated using Weblate (Albanian)
[ Burak Yavuz ]
* Translated using Weblate (Turkish)
[ Jiří Podhorecký ]
* Translated using Weblate (Czech)
[ James Valleroy ]
* container: Hold freedombox packages during test setup
* Vagrantfile: Enable public network for bridged networking
* doc: Fetch latest manual
[ Sunil Mohan Adapa ]
* d/control: Trim deps for nocheck build profile (Closes: #1129521)
* apache2: Disable pubtkt authentication module
-- James Valleroy <jvalleroy@mailbox.org> Sun, 08 Mar 2026 15:09:38 -0400
freedombox (26.4) unstable; urgency=medium
[ Joseph Nuthalapati ]

44
debian/control vendored
View File

@ -14,47 +14,47 @@ Build-Depends:
dblatex,
dh-python,
docbook-xsl,
e2fsprogs <!nocheck>,
e2fsprogs,
gir1.2-nm-1.0,
libjs-bootstrap5 <!nocheck>,
libjs-htmx <!nocheck>,
libjs-bootstrap5,
libjs-htmx,
# Older libjs-bootstrap5 does not have proper dependency on popper.js >= 2.0
node-popper2 <!nocheck>,
node-popper2,
pybuild-plugin-pyproject,
python3-all:any,
python3-apt <!nocheck>,
python3-apt,
python3-augeas,
python3-bootstrapform <!nocheck>,
python3-bootstrapform,
python3-build,
python3-cherrypy3,
python3-configobj <!nocheck>,
python3-cryptography <!nocheck>,
python3-configobj,
python3-cryptography,
python3-dbus,
python3-django <!nocheck>,
python3-django-axes <!nocheck>,
python3-django-captcha <!nocheck>,
python3-django,
python3-django-axes,
python3-django-captcha,
# Explictly depend on ipware as it is optional dependecy of django-axes
python3-django-ipware <!nocheck>,
python3-django-oauth-toolkit <!nocheck>,
python3-django-stronghold <!nocheck>,
python3-django-ipware,
python3-django-oauth-toolkit,
python3-django-stronghold,
python3-gi,
python3-markupsafe,
python3-mypy <!nocheck>,
python3-pampy <!nocheck>,
python3-mypy,
python3-pampy,
python3-pexpect,
python3-pip,
python3-psutil,
python3-pytest <!nocheck>,
python3-pytest-cov <!nocheck>,
python3-pytest-django <!nocheck>,
python3-pytest-runner <!nocheck>,
python3-pytest,
python3-pytest-cov,
python3-pytest-django,
python3-pytest-runner,
python3-requests,
python3-ruamel.yaml,
python3-setuptools,
python3-systemd,
python3-typeshed <!nocheck>,
python3-typeshed,
python3-yaml,
sshpass <!nocheck>,
sshpass,
xmlto,
xsltproc
Standards-Version: 4.7.3

View File

@ -8,19 +8,6 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
== FreedomBox 26.4.1 (2026-03-08) ==
=== Highlights ===
* apache2: Disable pubtkt authentication module
=== Other Changes ===
* container: Hold freedombox packages during test setup
* d/control: Trim deps for nocheck build profile
* locale: Update translations for Albanian, Chinese (Simplified Han script), Czech, Turkish
* Vagrantfile: Enable public network for bridged networking
== FreedomBox 26.4 (2026-03-02) ==
=== Highlights ===

View File

@ -8,19 +8,6 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f
The following are the release notes for each !FreedomBox version.
== FreedomBox 26.4.1 (2026-03-08) ==
=== Highlights ===
* apache2: Disable pubtkt authentication module
=== Other Changes ===
* container: Hold freedombox packages during test setup
* d/control: Trim deps for nocheck build profile
* locale: Update translations for Albanian, Chinese (Simplified Han script), Czech, Turkish
* Vagrantfile: Enable public network for bridged networking
== FreedomBox 26.4 (2026-03-02) ==
=== Highlights ===

View File

@ -3,4 +3,4 @@
Package init file.
"""
__version__ = '26.4.1'
__version__ = '26.4'

View File

@ -44,8 +44,7 @@ def _check(client, condition):
def _client_has_desktop(client):
"""Filter to find out whether an application has desktop clients"""
return _check(
client, lambda platform: platform.get('os') in enum_values(Desktop_OS)
and platform.get('type') != 'package')
client, lambda platform: platform.get('os') in enum_values(Desktop_OS))
def _client_has_mobile(client):
@ -117,7 +116,7 @@ def _validate_platform_package(platform):
def _validate_platform_download(platform):
"""Validate a platform of type download."""
assert platform['os'] in enum_values(Desktop_OS) + enum_values(Mobile_OS)
assert platform['os'] in enum_values(Desktop_OS)
assert isinstance(platform['url'], (str, Promise))

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-03 02:00+0000\n"
"PO-Revision-Date: 2026-03-08 18:48+0000\n"
"PO-Revision-Date: 2026-02-09 19:09+0000\n"
"Last-Translator: Jiří Podhorecký <j.podhorecky@volny.cz>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/freedombox/"
"freedombox/cs/>\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
"X-Generator: Weblate 5.17-dev\n"
"X-Generator: Weblate 5.16-dev\n"
#: plinth/config.py:103
#, python-brace-format
@ -167,7 +167,7 @@ msgstr "Webové rozhraní {box_name} (Plinth)"
#: plinth/modules/apache/__init__.py:129
msgid "Web app protected by FreedomBox"
msgstr "Webová aplikace chráněná FreedomBox"
msgstr ""
#: plinth/modules/apache/components.py:270
#, python-brace-format
@ -406,8 +406,10 @@ msgid "Passphrase"
msgstr "Heslová fráze"
#: plinth/modules/backups/forms.py:187
#, fuzzy
#| msgid "Passphrase; Only needed when using encryption."
msgid "Only needed when using encryption."
msgstr "Pouze potřeba při použití šifrování."
msgstr "Heslová fráze, potřebná pouze při použití šifrování."
#: plinth/modules/backups/forms.py:190
msgid "Confirm Passphrase"
@ -446,32 +448,44 @@ msgstr ""
"path/to/repo/</i>"
#: plinth/modules/backups/forms.py:255
#, fuzzy
#| msgid "Authentication Mode"
msgid "SSH Authentication Type"
msgstr "Typ ověření SSH"
msgstr "Režim ověřování"
#: plinth/modules/backups/forms.py:256
#, fuzzy
#| msgid "Authentication to remote server failed."
msgid "Choose how to authenticate to the remote SSH server."
msgstr "Zvolte, jak autentizovat na vzdáleném serveru SSH."
msgstr "Ověření vůči vzdálenému serveru se nezdařilo."
#: plinth/modules/backups/forms.py:258
#, fuzzy
#| msgid "needs authentication"
msgid "Key-based Authentication"
msgstr "Ověření klíčem"
msgstr "potřebuje ověření"
#: plinth/modules/backups/forms.py:259
#, fuzzy
#| msgid "Disable password authentication"
msgid "Password-based Authentication"
msgstr "Ověření heslem"
msgstr "Zakázat ověřování heslem"
#: plinth/modules/backups/forms.py:261
msgid "SSH server password"
msgstr "Heslo SSH serveru"
#: plinth/modules/backups/forms.py:262
#, fuzzy
#| msgid "Disable password authentication"
msgid "Required for password-based authentication."
msgstr "Vyžadováno pro ověření heslem."
msgstr "Zakázat ověřování heslem"
#: plinth/modules/backups/forms.py:275
#, fuzzy
#| msgid "Disable password authentication"
msgid "SSH password is needed for password-based authentication."
msgstr "Heslo SSH je potřeba pro ověření hesla."
msgstr "Zakázat ověřování heslem"
#: plinth/modules/backups/forms.py:292
msgid "Remote backup repository already exists."
@ -617,9 +631,6 @@ msgid ""
"list on the remote machine for %(box_name)s to be able to connect to the "
"remote machine:"
msgstr ""
"Následující SSH klientský veřejný klíč musí být přidán do autorizovaného "
"seznamu klíčů na vzdáleném stroji pro %(box_name)s být schopen připojit k "
"vzdálenému stroji:"
#: plinth/modules/backups/templates/backups_add_remote_repository.html:86
#, python-format
@ -628,9 +639,6 @@ msgid ""
"successful, then the public key will be automatically added to the "
"authorized keys list, so that future connections do not need the password."
msgstr ""
"%(box_name)s služba se pokusí připojit pomocí zadaného hesla. Pokud je "
"úspěšný, bude veřejný klíč automaticky přidán do autorizovaného seznamu "
"klíčů, takže budoucí spojení nepotřebuje heslo."
#: plinth/modules/backups/templates/backups_add_remote_repository.html:131
#: plinth/modules/backups/templates/backups_upload.html:28
@ -808,8 +816,10 @@ msgid "Authentication to remote server failed."
msgstr "Ověření vůči vzdálenému serveru se nezdařilo."
#: plinth/modules/backups/views.py:50
#, fuzzy
#| msgid "Error establishing connection to server: {}"
msgid "Error establishing connection to server: {} {} {}"
msgstr "Chyba při navazování spojení se serverem: {} {} {}"
msgstr "Chyba při navazování spojení se serverem: {}"
#: plinth/modules/backups/views.py:82
msgid "Backup schedule updated."
@ -1444,7 +1454,14 @@ msgid "Webserver Home Page"
msgstr "Domovská stránka domovského serveru"
#: plinth/modules/config/forms.py:37
#, python-brace-format
#, fuzzy, python-brace-format
#| msgid ""
#| "Choose the default page that must be served when someone visits your "
#| "{box_name} on the web. A typical use case is to set your blog or wiki as "
#| "the home page when someone visits the domain name. Note that once the "
#| "home page is set to something other than {box_name} Service (Plinth), "
#| "your users must explicitly type /plinth or /freedombox to reach "
#| "{box_name} Service (Plinth)."
msgid ""
"Choose the default page that must be served when someone visits your "
"{box_name} on the web. A typical use case is to set your blog or wiki as the "
@ -1452,12 +1469,12 @@ msgid ""
"is set to something other than {box_name} Service (Plinth), your users must "
"explicitly type /freedombox to reach {box_name} Service (Plinth)."
msgstr ""
"Vyberte výchozí stránku, která musí být použita při návštěvě vašeho "
"{box_name} na webu. Typický případ použití je nastavit váš blog nebo wiki "
"jako domovskou stránku, když někdo navštíví název domény. Vezměte prosím na "
"vědomí, že jakmile je domovská stránka nastavena na něco jiného než "
"{box_name} Service (Plinth), musí uživatelé explicitně zadat /freedombox k "
"dosažení {box_name} Služby (Plinth)."
"Zvolte výchozí stránku která je třeba, aby byla poskytována když někdo "
"navštíví web vašeho {box_name}. Typickým případem použití je nastavení svého "
"blogu nebo wiki jako domovskou stránku když někdo navštíví doménu. Mějte na "
"paměti, že jakmile je domovská stránka nastavená na něco jiného než službu "
"{box_name} (Plinth), uživatelé budou potřebovat výslovně zadávat /plinth "
"nebo /freedombox, aby se dostali na službu {box_name} (Plinth)."
#: plinth/modules/config/forms.py:48
msgid "Show advanced apps and features"
@ -2409,12 +2426,16 @@ msgstr ""
"automaticky a ukazují na prvního uživatele-administrátora."
#: plinth/modules/email/__init__.py:41
#, fuzzy
#| msgid ""
#| "<a href=\"/plinth/apps/roundcube/\">Roundcube app</a> provides web "
#| "interface for users to access email."
msgid ""
"<a href=\"/freedombox/apps/roundcube/\">Roundcube app</a> provides web "
"interface for users to access email."
msgstr ""
"<a href=\"/freedombox/apps/roundcube/\">Roundcube app</a> poskytuje webové "
"rozhraní pro uživatele přístup k e-mailu."
"<a href=\"/plinth/apps/roundcube/\">Aplikace Roundcube</a> poskytuje "
"uživatelům webové rozhraní pro přístup k e-mailu."
#: plinth/modules/email/__init__.py:43
msgid ""
@ -6170,16 +6191,22 @@ msgstr ""
"přijme, a aby %(box_name)s poskytoval služby."
#: plinth/modules/networks/templates/router_configuration_content.html:32
#, fuzzy
#| msgid ""
#| "If you don't have control over your router, choose not to configure it. "
#| "To see options to overcome this limitation, choose 'I dont have a public "
#| "IP address' option in <a href=\"/plinth/sys/networks/internet-connection-"
#| "type/\">Internet connection type selection</a>."
msgid ""
"If you don't have control over your router, choose not to configure it. To "
"see options to overcome this limitation, choose 'I dont have a public IP "
"address' option in <a href=\"/freedombox/sys/networks/internet-connection-"
"type/\">Internet connection type selection</a>."
msgstr ""
"Pokud nemáte kontrolu nad vaším routerem, zvolte, abyste ji nekonfigurovali. "
"Chcete-li vidět možnosti překonat toto omezení, vyberte možnost 'Nemám mít "
"veřejnou adresu IP' v <a href=\"/freedombox/sys/networks/internet-connection-"
"type/\"> Výběr internetového připojení</a>."
"Pokud nemáte kontrolu nad svým routerem, zvolte jej nekonfigurovat. Chcete-"
"li zobrazit možnosti, jak toto omezení překonat, vyberte možnost „Nemám "
"veřejnou IP adresu“ v <a href=\"/plinth/sys/networks/internet-connection-"
"type/\">Výběr typu připojení k internetu</a>."
#: plinth/modules/networks/templates/router_configuration_content.html:39
msgid "Choose How You Wish to Configure Your Router"
@ -6581,15 +6608,19 @@ msgstr "Aktualizace hesla se nezdařila. Zvolte prosím silnější heslo."
#: plinth/modules/oidc/__init__.py:56
msgid "OpenID Connect Provider"
msgstr "Poskytovatel OpenID Connect"
msgstr ""
#: plinth/modules/oidc/templates/oauth2_provider/authorize.html:14
#, fuzzy
#| msgid "Application enabled"
msgid "Application"
msgstr "Aplikace"
msgstr "Aplikace zapnuta"
#: plinth/modules/oidc/templates/oauth2_provider/authorize.html:22
#, fuzzy
#| msgid "Authorized SSH Keys"
msgid "Authorize App"
msgstr "Autorizovat aplikaci"
msgstr "Pověřené SSH klíče"
#: plinth/modules/oidc/templates/oauth2_provider/authorize.html:37
#, python-format
@ -6597,18 +6628,17 @@ msgid ""
"<strong>%(app)s</strong> wants to access your account <strong> %(username)s</"
"strong>"
msgstr ""
"<strong>%(app)s</strong> chce přistupovat ke svému účtu <strong> %(username)"
"s</strong>"
#: plinth/modules/oidc/templates/oauth2_provider/authorize.html:52
#, python-format
#, fuzzy, python-format
#| msgid "Authorized SSH Keys"
msgid "Authorize %(app)s"
msgstr "Autorizovat %(app)s"
msgstr "Pověřené SSH klíče"
#: plinth/modules/oidc/templates/oauth2_provider/authorize.html:59
#, python-format
msgid "Authorizing will redirect to %(url)s"
msgstr "Autorizace přesměruje na %(url)s"
msgstr ""
#: plinth/modules/openvpn/__init__.py:20
#, python-brace-format
@ -8025,15 +8055,22 @@ msgstr ""
"automaticky mazány podle níže uvedených nastavení."
#: plinth/modules/snapshot/__init__.py:25
#, fuzzy
#| msgid ""
#| "Snapshots currently work on btrfs file systems only and on the root "
#| "partition only. Snapshots are not a replacement for <a href=\"/plinth/sys/"
#| "backups\">backups</a> since they can only be stored on the same "
#| "partition. "
msgid ""
"Snapshots currently work on btrfs file systems only and on the root "
"partition only. Snapshots are not a replacement for <a href=\"/freedombox/"
"sys/backups\">backups</a> since they can only be stored on the same "
"partition. "
msgstr ""
"Snapshoty v současné době pracují pouze na souborech btrfs a pouze na "
"kořenovém oddílu. Snapshoty nejsou náhradou za <a href=\"/freedombox/sys/"
"backups\">backups</a> protože mohou být uloženy pouze na stejném oddílu. "
"Zachycené stavy v tuto chvíli fungují pouze na souborovém systému btrfs a "
"kořenovém oddílu. Zachycené stavy nejsou náhradou <a href=\"/plinth/sys/"
"backups\">backups</a>, protože mohou být ukládány pouze na stejném oddílu, "
"jako živá data. "
#: plinth/modules/snapshot/__init__.py:50
msgid "Storage Snapshots"
@ -9876,12 +9913,14 @@ msgid "Invalid key."
msgstr "Neplatný klíč."
#: plinth/modules/wireguard/forms.py:63
#, fuzzy
#| msgid "Enter a valid username."
msgid "Enter a valid IPv4 address."
msgstr "Zadejte platnou adresu IPv4."
msgstr "Zadejte platné uživatelské jméno."
#: plinth/modules/wireguard/forms.py:65
msgid "Enter a valid network prefix or net mask."
msgstr "Zadejte platnou předponu sítě nebo net masku."
msgstr ""
#: plinth/modules/wireguard/forms.py:71
#: plinth/modules/wireguard/templates/wireguard.html:28
@ -9927,6 +9966,11 @@ msgid "Client IP address provided by server"
msgstr "IP adresa klienta poskytnutá serverem"
#: plinth/modules/wireguard/forms.py:94
#, fuzzy
#| msgid ""
#| "IP address assigned to this machine on the VPN after connecting to the "
#| "endpoint. This value is usually provided by the server operator. Example: "
#| "192.168.0.10."
msgid ""
"IP address assigned to this machine on the VPN after connecting to the "
"endpoint. This value is usually provided by the server operator. Example: "
@ -9934,10 +9978,9 @@ msgid ""
"machines in the network. Examples: 10.68.12.43/24 or "
"10.68.12.43/255.255.255.0."
msgstr ""
"IP adresa přiřazená k tomuto stroji na VPN po připojení k koncovému bodu. "
"Tato hodnota je obvykle poskytována provozovatelem serveru. Příklad: "
"192.168.0.10. Můžete také zadat síť. To umožní dosažení strojů v síti. "
"Příklady: 10.68.12.43/24 nebo 10.68.12.43/255.255.255.0."
"IP adresa přiřazená tomuto počítači v síti VPN po připojení ke koncovému "
"bodu. Tuto hodnotu obvykle poskytuje provozovatel serveru. Příklad: "
"192.168.0.10."
#: plinth/modules/wireguard/forms.py:102
msgid "Private key of this machine"
@ -9987,30 +10030,34 @@ msgid "As a Server"
msgstr "Jako server"
#: plinth/modules/wireguard/templates/wireguard.html:16
#, python-format
#, fuzzy, python-format
#| msgid "Endpoints for this %(box_name)s:"
msgid "Information for this %(box_name)s:"
msgstr "Informace pro tento %(box_name)s:"
msgstr "Endpointy pro tento %(box_name)s:"
#: plinth/modules/wireguard/templates/wireguard.html:24
msgid "Property"
msgstr "Vlastnost"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:25
msgid "Value"
msgstr "Hodnota"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:32
#, fuzzy
#| msgid "Endpoint"
msgid "Endpoint(s)"
msgstr "Koncový bod(y)"
msgstr "Koncový bod"
#: plinth/modules/wireguard/templates/wireguard.html:40
#, python-format
#, fuzzy, python-format
#| msgid "To %(box_name)s Ports"
msgid "%(box_name)s VPN IP for services"
msgstr "%(box_name)s VPN IP pro služby"
msgstr "Na %(box_name)s Porty"
#: plinth/modules/wireguard/templates/wireguard.html:49
msgid "Peers"
msgstr "Peery"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard.html:51
msgid "Peers allowed to connect to this server:"
@ -10040,8 +10087,10 @@ msgid "Add Allowed Client"
msgstr "Přidat povoleného klienta"
#: plinth/modules/wireguard/templates/wireguard.html:96
#, fuzzy
#| msgid "WireGuard server started successfully."
msgid "WireGuard server not started yet."
msgstr "Server WireGuard ještě nenastartoval."
msgstr "Server WireGuard se úspěšně spustil."
#: plinth/modules/wireguard/templates/wireguard.html:100
#: plinth/modules/wireguard/templates/wireguard.html:102
@ -10132,7 +10181,7 @@ msgstr "Veřejný klíč serveru:"
#: plinth/modules/wireguard/templates/wireguard_show_client.html:45
msgid "Server VPN IP address for services:"
msgstr "IP adresa VPN serveru pro služby:"
msgstr ""
#: plinth/modules/wireguard/templates/wireguard_show_client.html:57
#: plinth/modules/wireguard/templates/wireguard_show_server.html:63
@ -10174,7 +10223,7 @@ msgstr "IP adresa tohoto počítače:"
#: plinth/modules/wireguard/templates/wireguard_show_server.html:45
msgid "All outgoing traffic is sent using this connection:"
msgstr "Veškerý odchozí provoz je odeslán pomocí tohoto spojení:"
msgstr ""
#: plinth/modules/wireguard/views.py:54
msgid "Added new client."
@ -10433,19 +10482,21 @@ msgstr "Časový limit čekání na správce balíčků"
#: plinth/settings.py:181
msgid "Uniquely identify your user account with username"
msgstr "Jedinečně identifikovat váš uživatelský účet s uživatelským jménem"
msgstr ""
#: plinth/settings.py:183
#, fuzzy
#| msgid "requesting address"
msgid "View email address"
msgstr "Zobrazit emailovou adresu"
msgstr "vyžadující adresu"
#: plinth/settings.py:185
msgid "View basic profile information (such as name and email)"
msgstr "Zobrazit základní informace o profilu (např. jméno a e-mail)"
msgstr ""
#: plinth/settings.py:187
msgid "View permissions that account has"
msgstr "Zobrazení oprávnění, které má účet"
msgstr ""
#: plinth/setup.py:44
msgid "Installing app"

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-03 02:00+0000\n"
"PO-Revision-Date: 2026-03-09 19:09+0000\n"
"PO-Revision-Date: 2025-12-19 20:00+0000\n"
"Last-Translator: OwlGale <owlgale@users.noreply.hosted.weblate.org>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/freedombox/"
"freedombox/ru/>\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Weblate 5.17-dev\n"
"X-Generator: Weblate 5.15.1\n"
#: plinth/config.py:103
#, python-brace-format
@ -473,20 +473,26 @@ msgid "Key-based Authentication"
msgstr "требуется аутентификация"
#: plinth/modules/backups/forms.py:259
#, fuzzy
#| msgid "Disable password authentication"
msgid "Password-based Authentication"
msgstr "Аутентификация по паролю"
msgstr "Отключить аутентификацию по паролю"
#: plinth/modules/backups/forms.py:261
msgid "SSH server password"
msgstr "Пароль SSH-сервера"
#: plinth/modules/backups/forms.py:262
#, fuzzy
#| msgid "Disable password authentication"
msgid "Required for password-based authentication."
msgstr "Требуется для аутентификации по паролю."
msgstr "Отключить аутентификацию по паролю"
#: plinth/modules/backups/forms.py:275
#, fuzzy
#| msgid "Disable password authentication"
msgid "SSH password is needed for password-based authentication."
msgstr "Пароль SSH требуется для аутентификации по паролю."
msgstr "Отключить аутентификацию по паролю"
#: plinth/modules/backups/forms.py:292
msgid "Remote backup repository already exists."
@ -1745,13 +1751,13 @@ msgstr "предупреждение"
#. Megabyte.
#: plinth/modules/diagnostics/__init__.py:221
msgid "MiB"
msgstr "МиБ"
msgstr "МБ"
#. Translators: This is the unit of computer storage Gibibyte similar to
#. Gigabyte.
#: plinth/modules/diagnostics/__init__.py:226
msgid "GiB"
msgstr "ГиБ"
msgstr "ГБ"
#: plinth/modules/diagnostics/__init__.py:233
msgid "You should disable some apps to reduce memory usage."
@ -6653,8 +6659,10 @@ msgid "Application"
msgstr "Приложения"
#: plinth/modules/oidc/templates/oauth2_provider/authorize.html:22
#, fuzzy
#| msgid "Authorized SSH Keys"
msgid "Authorize App"
msgstr "Авторизовать приложение"
msgstr "Авторизованные SSH ключи"
#: plinth/modules/oidc/templates/oauth2_provider/authorize.html:37
#, python-format
@ -6664,9 +6672,10 @@ msgid ""
msgstr ""
#: plinth/modules/oidc/templates/oauth2_provider/authorize.html:52
#, python-format
#, fuzzy, python-format
#| msgid "Authorized SSH Keys"
msgid "Authorize %(app)s"
msgstr "Авторизовать %(app)s"
msgstr "Авторизованные SSH ключи"
#: plinth/modules/oidc/templates/oauth2_provider/authorize.html:59
#, python-format
@ -10195,8 +10204,10 @@ msgid "Add Connection to Server"
msgstr "Добавить подключение к серверу"
#: plinth/modules/wireguard/templates/wireguard_add_client.html:21
#, fuzzy
#| msgid "IP address to use for client:"
msgid "IP address that will be assigned to this client"
msgstr "IP-адрес который будет присвоен этому клиенту"
msgstr "IP-адрес для использования клиентом:"
#: plinth/modules/wireguard/templates/wireguard_add_client.html:31
msgid "Add Client"

View File

@ -86,7 +86,7 @@ class ApacheApp(app_module.App):
app_id = 'apache'
_version = 16
_version = 15
def __init__(self) -> None:
"""Create components for the app."""

View File

@ -128,7 +128,7 @@ def setup(old_version: int):
# Various modules for authentication/authorization
webserver.enable('auth_openidc', kind='module')
webserver.enable('authnz_ldap', kind='module')
webserver.disable('auth_pubtkt', kind='module')
webserver.enable('auth_pubtkt', kind='module')
# enable some critical modules to avoid restart while installing
# FreedomBox applications.

View File

@ -15,8 +15,7 @@ clients = [{
'platforms': [{
'type': 'download',
'os': 'windows',
'url': ('https://download.wireguard.com/'
'windows-client/wireguard-installer.exe')
'url': 'https://download.wireguard.com'
}, {
'type': 'download',
'os': 'macos',
@ -26,18 +25,10 @@ clients = [{
'format': 'deb',
'name': 'wireguard'
}, {
'type': 'package',
'format': 'rpm',
'name': 'wireguard-tools'
}, {
'type': 'package',
'format': 'brew',
'name': 'wireguard-tools'
}, {
'type': 'download',
'type': 'store',
'os': 'android',
'url': ('https://www.wireguard.com/'
'install/#android-play-store-direct-apk-file')
'store_name': 'f-droid',
'url': store_url('f-droid', _wireguard_package_id)
}, {
'type': 'store',
'os': 'android',

View File

@ -45,22 +45,20 @@
<td>
{% for platform in client.platforms %}
{% if platform.type == 'download' %}
{% if platform.os == 'gnu-linux' or platform.os == 'macos' or platform.os == 'windows' %}
<a class="btn btn-default" href="{{ platform.url }}" role="button">
<span>
{% with 'theme/icons/'|add:platform.os|add:'.png' as icon %}
<img class="client-icon" src="{% static icon %}" />
{% if platform.os == 'gnu-linux' %}
{% trans 'GNU/Linux' %}
{% elif platform.os == 'windows' %}
{% trans 'Windows' %}
{% elif platform.os == 'macos' %}
{% trans 'macOS' %}
{% endif %}
{% endwith %}
</span>
</a>
{% endif %}
<a class="btn btn-default" href="{{ platform.url }}" role="button">
<span>
{% with 'theme/icons/'|add:platform.os|add:'.png' as icon %}
<img class="client-icon" src="{% static icon %}" />
{% if platform.os == 'gnu-linux' %}
{% trans 'GNU/Linux' %}
{% elif platform.os == 'windows' %}
{% trans 'Windows' %}
{% elif platform.os == 'macos' %}
{% trans 'macOS' %}
{% endif %}
{% endwith %}
</span>
</a>
{% endif %}
{% endfor %}
</td>
@ -77,16 +75,6 @@
<td>{{ client.name }}</td>
<td>
{% for platform in client.platforms %}
{% if platform.type == 'download' and platform.os == 'android' %}
<a class="btn btn-default" href="{{ platform.url }}" role="button">
<span>
{% with 'theme/icons/'|add:platform.os|add:'.png' as icon %}
<img class="client-icon" src="{% static icon %}" />
{% trans 'Android APK' %}
{% endwith %}
</span>
</a>
{% endif %}
{% if platform.type == 'store' and platform.os == 'android' or platform.os == 'ios' %}
<a class="btn btn-default" href="{{ platform.url }}" role="button">
<span>
@ -119,17 +107,15 @@
<td>
{% for platform in client.platforms %}
{% if platform.type == 'package' %}
<div>
{% if platform.format == 'deb' %}
<strong>{% trans "Debian:" %}</strong> {{ platform.name }}
{% endif %}
{% if platform.format == 'brew' %}
<strong>{% trans "Homebrew:" %}</strong> {{ platform.name }}
{% endif %}
{% if platform.format == 'rpm' %}
<strong>{% trans "RPM:" %}</strong> {{ platform.name }}
{% endif %}
</div>
{% if platform.format == 'deb' %}
<div><strong>{% trans "Debian:" %}</strong> {{ platform.name }}</div>
{% endif %}
{% if platform.format == 'brew' %}
<div><strong>{% trans "Homebrew:" %}</strong> {{ platform.name }}</div>
{% endif %}
{% if platform.format == 'rpm' %}
<p><strong>{% trans "RPM:" %}</strong> {{ platform.name }}</p>
{% endif %}
{% endif %}
{% endfor %}
</td>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 500 B