10274 Commits

Author SHA1 Message Date
Sunil Mohan Adapa
0e773e7ad0
clients: Fix show empty clients in Desktop section
When a client has a package but no desktop package, an empty client entry
appears in the Desktop section.

Tests:

- For MiniDLNA, in the Desktop section, there is not empty entry for totem
anymore.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2026-03-09 15:26:17 -07:00
Frederico Gomes
f99f3bd382
clients: Fix formatting of package row in table
Adjust row so that package entries are evenly distributed

Signed-off-by: Frederico Gomes <fredericojfgomes@gmail.com>
[sunil: Fix indentation]
[sunil: Convert tabs to spaces]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2026-03-09 15:25:23 -07:00
Frederico Gomes
15b7a34072
wireguard: Add entries for Homebrew and RPM packages
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2026-03-09 15:25:20 -07:00
Frederico Gomes
0ba4cbe259
wireguard: Add button for direct APK download
**clients.py**
- allow download type for mobile os

**manifest.py**
- add entry for apk download

**plinth/templates/clients.html**
- add logic to show button for apk download

**themes > icons**
- add icon for android

source: https://www.wireguard.com/install/

Signed-off-by: Frederico Gomes <fredericojfgomes@gmail.com>
[sunil: Minor indentation]
[sunil: Refactor logic to eliminate packages from Desktop clients list]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2026-03-09 15:25:17 -07:00
Frederico Gomes
176bb97c88
wireguard: Update windows client link
Update download link to .exe provided by WireGuard.
A utility that downloads, verifies and executes provided MSIs.

source: https://www.wireguard.com/install/

Signed-off-by: Frederico Gomes <fredericojfgomes@gmail.com>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2026-03-09 15:16:39 -07:00
Frederico Gomes
bd6780b81d
wireguard: Remove client entry for F-Droid which is not available
Link to the F-Droid WireGuard package returns 404 Not Found.
WireGuard seems to no longer be packaged by F-Droid.

Signed-off-by: Frederico Gomes <fredericojfgomes@gmail.com>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2026-03-09 15:15:55 -07:00
OwlGale
831a18847e
Translated using Weblate (Russian)
Currently translated at 98.1% (1875 of 1910 strings)
2026-03-09 19:09:48 +00:00
James Valleroy
4db977ff4e
Release v26.4.2 to unstable
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
debian/26.4.2
2026-03-08 15:28:08 -04:00
James Valleroy
448d5d84ed
Merge remote-tracking branch 'freedombox-team/main' 2026-03-08 15:26:43 -04:00
James Valleroy
41640f5d3c
Release v26.4.1 to unstable
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
debian/26.4.1
2026-03-08 15:10:35 -04:00
James Valleroy
5381990e02
doc: Fetch latest manual
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-08 15:09:08 -04:00
OwlGale
5a2e8ddc16
Translated using Weblate (Russian)
Currently translated at 97.9% (1870 of 1910 strings)
2026-03-08 19:48:32 +01:00
Jiří Podhorecký
4d6ddcdcdb
Translated using Weblate (Czech)
Currently translated at 100.0% (1910 of 1910 strings)
2026-03-08 19:48:32 +01:00
Sunil Mohan Adapa
97a2d68ac6
apache2: Disable pubtkt authentication module
- Since FreedomBox does not depend on the package anymore, unattended-upgrades
will remove the package. This causes Apache2 to fail to start. Disable the
module from Apache2 configuration.

Tests:

- Remove the libapache2-mod-auth-pubtkt package. Re-run apache app setup by
incrementing it version number. Apache will fail to start. Apply the patch and
increment the version number. auth_pubtkt module will be disabled and Apache is
automatically running again.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-08 14:41:14 -04:00
Sunil Mohan Adapa
6128d3be16
d/control: Trim deps for nocheck build profile (Closes: #1129521)
Closes: #1129521

Tests:

- Build package successfully with the following command: gbp buildpackage
--git-debian-branch=debian-nocheck-build-profile --git-pbuilder
--git-pbuilder-options="--profiles=nocheck

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-08 09:14:09 -04:00
James Valleroy
bce25f465f
Vagrantfile: Enable public network for bridged networking
When testing OpenID Connect, I found that it wasn't working in a VM
with NAT port forwarding. However, vagrant can use bridged networking
instead. When the vagrant box is brought up, the user will be prompted
for which network interface to bridge.

Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2026-03-07 13:12:36 -08:00
James Valleroy
71913580db
container: Hold freedombox packages during test setup
Fixes: #2567

Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2026-03-07 13:10:19 -08:00
Jiří Podhorecký
eb709f8687
Translated using Weblate (Czech)
Currently translated at 99.7% (1906 of 1910 strings)
2026-03-06 22:09:48 +01:00
Burak Yavuz
cfc5d3acab
Translated using Weblate (Turkish)
Currently translated at 100.0% (1910 of 1910 strings)
2026-03-04 06:09:53 +01:00
Besnik Bleta
212d865b43
Translated using Weblate (Albanian)
Currently translated at 99.5% (1902 of 1910 strings)
2026-03-04 06:09:51 +01:00
大王叫我来巡山
9a55902f37
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 61.0% (1167 of 1910 strings)
2026-03-04 06:09:48 +01:00
James Valleroy
07845bc960
apache: Fix check_url test
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
debian/26.4
2026-03-02 21:49:41 -05:00
James Valleroy
abbc4e7557
Release v26.4 to unstable
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 21:36:08 -05:00
James Valleroy
af70c73f24
doc: Fetch latest manual
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 21:35:03 -05:00
James Valleroy
5ccb332ce6
locale: Update translation strings
Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 21:01:26 -05:00
Sunil Mohan Adapa
e2047ec3a0
apache: Fix diagnosing URLs protected by OpenID Connect
Tests:

- Clear out the directory /var/cache/apache2/mod_auth_openidc/metadata/. Then
run diagnostics on Calibre app without the patch. Several URLs fail because 404
has been returned on <domain>/calibre URL. With the patch the diagnostics
succeed.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:46 -05:00
Sunil Mohan Adapa
a7584b465d
sso: Merge into users module, drop pubtkt related code
Tests:

- 'make install' removes enabled sso module

- Already logged in users stay logged in after update

- Apps need to re-authenticate of update (but this is transparent)

- Login and logout work as expected

- Failed login attempts lead to CAPTCHA form

- CAPTCHA form can't be skipped

- Answering CAPTCHA form will lead back to login page

- Users functional tests work

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:41 -05:00
Sunil Mohan Adapa
6fd85e3e46
sharing: Use OpenID Connect instead of pubtkt based SSO
- Migrate old configuration file to new format.

Tests:

- Admin user is able to access a share.

- User belonging to a group allowed to access the share is able to access the
application.

- Regular user is not able to access the application.

- Anonymous user is not able to access the application.

- Setup is run after applying patches.

- Old shares are migrated from old style auth from authpubtkt to oidc. Name,
path, is_public, groups are presevered

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:39 -05:00
Sunil Mohan Adapa
31e7997d2b
doc/dev: Use OpenID Connect instead of pubtkt based SSO
Tests:

- The built documentation has been updated as expected.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:36 -05:00
Sunil Mohan Adapa
68126c3ec6
transmission: Use OpenID Connect instead of pubtkt based SSO
Tests:

- Functional tests work.

- Admin user is able to access the application

- User belonging to special group is able to access the application

- Regular user is not able to access the application

- Anonymous user is not able to access the application

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:34 -05:00
Sunil Mohan Adapa
29ef56b51e
wordpress: Use OpenID Connect instead of pubtkt based SSO when private
Tests:

- Functional tests work.

- Admin user is able to access the application

- User belonging to special group is able to access the application

- Regular user is not able to access the application

- Anonymous user is not able to access the application

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:32 -05:00
Sunil Mohan Adapa
efe2bccb11
tiddlywiki: Use OpenID Connect instead of pubtkt based SSO
Tests:

- Functional tests work.

- Admin user is able to access the application

- User belonging to special group is able to access the application

- Regular user is not able to access the application

- Anonymous user is not able to access the application

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:29 -05:00
Sunil Mohan Adapa
64272a2bef
gitweb: Use OpenID Connect instead of pubtkt based SSO
- Regression: Users who to don't have git-access permission can't access the
public repositories.

Tests:

- Functional tests work.

- Admin user is able to view and access the repos when there are some public
repos and when there no public repos.

- User belonging to git-access are regular usrs are unable to access private
repos. But they are also not able to access the public repos. They have to
logout to be able to do that.

- Anonymous user is not able to access the application if all repos are private.
If there is at least one public repo, the repo listing can be accessed and
public repos can be seen and accessed.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:27 -05:00
Sunil Mohan Adapa
af892adb5e
deluge: Use OpenID Connect instead of pubtkt based SSO
Tests:

- Functional tests work.

- Admin user is able to access the application

- User belonging to special group is able to access the application

- Regular user is not able to access the application

- Anonymous user is not able to access the application

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:25 -05:00
Sunil Mohan Adapa
4ab2007c99
calibre: Use OpenID Connect instead of pubtkt based SSO
Tests:

- Functional tests work.

- Admin user is able to access the application

- User belonging to special group is able to access the application

- Regular user is not able to access the application

- Anonymous user is not able to access the application

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:22 -05:00
Sunil Mohan Adapa
3c1d801e15
email: Use OpenID Connect instead of pubtkt based SSO
Tests:

- Functional tests work.

- Admin user is able to access the application

- Regular user is not able to access the application

- Anonymous user is not able to access the application

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:20 -05:00
Sunil Mohan Adapa
e2da29cf25
rssbridge: Use OpenID Connect instead of pubtkt based SSO
Tests:

- Functional tests work.

- Admin user is able to access the application

- User belonging to special group is able to access the application

- Regular user is not able to access the application

- Anonymous user is not able to access the application

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:18 -05:00
Sunil Mohan Adapa
ce62fdb142
searx: Use OpenID Connect instead of pubtkt based SSO
Tests:

- Application is not installable in stable and testing. It is not functional in
unstable.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:15 -05:00
Sunil Mohan Adapa
cad6bc8ca0
syncthing: Use OpenID Connect instead of pubtkt based SSO
Tests:

- Functional tests work.

- Admin user is able to access the application

- User belonging to special group is able to access the application

- Regular user is not able to access the application

- Anonymous user is not able to access the application

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:13 -05:00
Sunil Mohan Adapa
483f28de83
featherwiki: Use OpenID Connect instead of pubtkt based SSO
Tests:

- Functional tests work.

- Admin user is able to access the application

- User belonging to special group is able to access the application

- Regular user is not able to access the application

- Anonymous user is not able to access the application

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:10 -05:00
Sunil Mohan Adapa
64f1a1c918
apache: Implement protecting apps using OpenID Connect
- Use the excellent Apache module auth_openidc.

- Implement macros that can be easily used to configure OpenID Connect.

Tests:

- Accessing /freedombox/apache/discover-idp/ shows

  - 'method' other than 'get' throw a 'bad request' error

  - oidc_callback should match host. Otherwise 'bad request' error is raised.

  - Mismatched host header is not allowed

  - Invalid domain setup is not allowed

  - target_link_uri is returned as is

  - method is returned as is and only 'get' is allowed.

  - x_csrf is returned as is

  - oidc_scopes is returned as 'email freedombox_groups'

  - HTTP request is answered and not redirected to https

- When logging in with OIDC, authorization is skipped. When authorization is
shown, it is shown as 'Web app protected by FreedomBox'.

- libapache2-mod-auth-openidc is added a dependency for freedombox package. It
is installable in stable, testing, and unstable distributions.

- On applying patches, Apache setup configuration is run and OpenIDC component
is created.

- When patches are applied and setup install is run, auth_openidc module,
10-freedombox, freedombox-openidc config is enabled in Apache.

- When setup is rerun, passphrase is not changed

- metadata directory and parent are created when apache setup is run. Mode is
0o700 and ownership is www-data.

- freedombox-openidc is created when apache setup is run and has 0o700
permissions.

- Metadata directory will contain the client id and client passphrase when
discovery happens for a particular domain.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:06 -05:00
Sunil Mohan Adapa
cdfbff0b6b
oidc: Style the page for authorizing an OIDC app
Tests:

- Appearance is acceptable: top margin, width of the readable text, heading
centering, list top/bottom margins, SVG icon for application, md mode icon size,
submit button width, margins.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:51:00 -05:00
Sunil Mohan Adapa
45076cc603
oidc: New app to implement OpenID Connect Provider
- Add a component to easily manage registration of client applications.

Tests:

- Package build is successful has dependency on python3-django-auto-toolkit

- python3-django-oauth-toolkit can be installed on stable, testing and unstable
containers

- /.well-known/openid-configuration and /.well-known/jwks.json are servered
properly.

- /o/ URLs don't require login to access

- When logging in list of claims includes 'sub', email, freedombox_groups.

- Logging in using IP address works. Also works with a port.

- Logging in using 127.0.0.1 address works. Also works with a port.

- Logging in using localhost works. Also works with a port.

- Logging in with IPv6 address works. Also works with a port.

- Logging in with IPv6 [::1] address works. Also works with a port.

- Logging in with IPv6 link-local address with zone ID is not possible (as
browsers don't support them).

- When authorization page is enabled, scopes show description as expected.

- When domain name is added/removed, all OIDC components are updated with
expected domains

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:50:46 -05:00
Sunil Mohan Adapa
f0b1aa34ac
apache: Preserve host header when proxying to service
- This allows us to perform some checks before redirecting for OpenID Connect.

Tests:

- Functional tests of many apps pass with the patch.

- OIDC related changes introduced later work due to this change.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:50:43 -05:00
Sunil Mohan Adapa
bced133d90
templates: Allow building pages without navigation bar and footer
Tests:

- Functional tests of many apps pass with the patch.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:50:41 -05:00
Sunil Mohan Adapa
a8e2d4cd69
web_framework: Allow FreedomBox apps to override templates
Tests:

- Functional tests of many apps pass with this change.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:50:38 -05:00
Sunil Mohan Adapa
bbbe2cf950
tests: functional: Fix expecting FreedomBox to be home page
In some cases, we are visiting / and expecting to reach the home page of
FreedomBox UI. When due to failed tests in config app, the home page is set to
something other than FreedomBox UI, these tests fail. Fix this by visiting
/freedombox explicitly instead.

Tests:

- When hope page is set to Syncthing, kiwix functional tests pass.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:50:36 -05:00
Sunil Mohan Adapa
168f662a17
*: Update URL base from /plinth to /freedombox
- Since we are going to be an OpenID Provider, we need to fix the URLs that
other apps will be configured with for authentication. So change now from
/plinth to /freedombox. If done later, it will be harder since all the
configuration files for all dependent apps will need to be updated.

Tests:

- App availability checking works. Request goes to /freedombox URL

- Favicon is served properly and through /favicon.ico URL

- Redirection happens from / to /freedombox directly

- UI is available on /freedombox and on /plinth

- Manual page show /freedombox as the URL in two places

- Static files are successfully served from /freedombox URLs. URLs inside page
start with /freedombox

- backup, bepasty, calibre, config, dynamicdns, ejabberd, featherwiki, gitweb,
ikiwiki, kiwix, miniflux, names, openvpn, shadowsocks, shadowsocksserver,
sharing, shapshot, tiddlywiki, users, wireguard, jsxc, matrixsynapse, first
wizard, storage, samba, tags functional tests work. Backup/restore test for
matrixsynapse fails due to an unrelated bug (server not restarted after
restore).

- Setting the home page works:

  - Having /plinth in the home page configuration works. Shows selection
    correctly.

  - Setting to app works. Shows selection correctly.

  - Setting to user home page (sets /freedombox). Shows selection correctly.

  - Setting to apache default works. Shows selection correctly.

  - Changing back to FreedomBox service works. Shows selection correctly.

- Unit tests work

- Configuration page shows /freedombox in description but not /plinth

- Diagnostics show /freedombox in tests

- Roundcube URL link in email app has /freedombox

- email loads the page /.well-known/autoconfig/mail/config-v1.1.xml correctly

- email app shows /freedombox/apps/roundcube for /roundcube if roundcube is not
installed.

- networks: router configuration page shows URL starting with /freedombox.

- snapshot: Shows URL starting with /freedombox on the app page

- js licenses page uses /freedombox prefix for JSXC.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:50:30 -05:00
Sunil Mohan Adapa
0d579012d7
web_server: Log requests to WSGI app
- This is quite useful for debugging even on production machines.

- CherryPy can't be used for logging as grafting a WSGI application bypasses the
usual mechanisms of logging.

- Keep requests for static files turned off in CherryPy as these are not very
useful.

Tests:

- Making a request print an INFO message on the log with method and path after
the /freedombox part. Logs can be seen in systemd journal.

- Requests for static files are not logged.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:50:28 -05:00
Sunil Mohan Adapa
854916c54c
syncthing: tests: Fix tests by allowing rapid restarts
Tests:

- Functional tests for syncthing pass.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-03-02 20:50:25 -05:00