Commit Graph

86 Commits

Author SHA1 Message Date
Ilia Ross
8a20f7ea34 Fix socket tests without Socket6 2026-09-14 01:36:41 +02:00
Ilia Ross
267b6bc07f Fix IPv4 delays caused by IPv6 lookups
This PR fixes delays when IPv6 DNS lookups stall otherwise working IPv4 connections.

The earlier changes ([04c74877](04c74877c3) and [8a6f7784](8a6f778410)) added fallback across available IPv4 and IPv6 addresses, which this PR preserves.

Resolving both families upfront appears to have been an implementation choice, yet now IPv6 is resolved only when no IPv4 connection succeeds.

Unit tests and real socket compatibility tests passed on Alma 10 and Debian 13.
2026-09-13 23:49:36 +02:00
Ilia Ross
29f595dbdf Fix to change Software Packages file validation
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
2026-09-13 12:55:28 +02:00
Ilia Ross
afc256831c Fix TLS client certificate verification
ⓘ Prevent certificate-chain errors from being overwritten while preserving password-login fallback for invalid optional certificates.

Reset verification state for every TLS handshake and add regression coverage.
2026-09-13 03:17:13 +02:00
Ilia Ross
a840b54685 Fix arbitrary file reads in Software Packages 2026-09-12 20:09:28 +02:00
Ilia Ross
d7c7ba87cc Add regression tests 2026-09-10 04:31:18 +02:00
Ilia Ross
0c7792d681 Fix multi-select control ids across forms
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
2026-09-09 16:09:23 +02:00
Ilia Ross
d471c706f6 Add regression coverage for both multi-select widgets
ⓘ Verify separate theme hooks, asset loading, legacy layout options and submission order.
2026-09-09 13:54:07 +02:00
Ilia Ross
74c771c257 Add trusted HTML labels to multi-select lists
ⓘ Support html => 1 while preserving default escaping, text filtering and accessible checkbox names.
2026-09-09 13:51:10 +02:00
Ilia Ross
c8249f9a50 Add optional counters and simplify multi-select toolbars
ⓘ Support count => 0, hide bulk actions below nine entries, and remove empty toolbar space.
2026-09-09 13:40:08 +02:00
Ilia Ross
bbd9a56e42 Fix positional multi-select list compatibility
ⓘ Preserve selected labels, value order and pre-escaped text when callers omit the options hash.
2026-09-09 13:29:32 +02:00
Ilia Ross
8a43ad1b07 Add themed toggle colors and style options 2026-09-09 03:19:43 +02:00
Ilia Ross
3187565d00 Fix legacy compatibility in multi-selection lists 2026-09-09 01:05:07 +02:00
Ilia Ross
e51d723d00 Add searchable multi-selection list widget
https://forum.virtualmin.com/t/new-ui-widgets-for-webmin-modules/137932/12?u=ilia
2026-09-08 23:51:45 +02:00
Ilia Ross
63d8d66f48 Add more useful examples 2026-09-07 15:13:53 +02:00
Ilia Ross
20a487ca5a Add UI widgets and demo module
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
Close inactive / close-inactive (push) Has been cancelled
ⓘ Add composable widgets, shared styling and interactions, sortable-table options, and a read-only UI gallery.
2026-09-05 03:52:39 +02:00
Ilia Ross
7f237871ba Add shared server section lookup
https://github.com/webmin/webmin/pull/2827#pullrequestreview-5047577760
2026-08-28 14:46:07 +02:00
Ilia Ross
4e6ba5229e Fix binary log retention limit on MariaDB 2026-08-28 02:46:40 +02:00
Ilia Ross
b3b81af34f Add MySQL binary log management
This PR adds a "Binary Logging" page to configure log format, file size and retention, rotate or purge logs, and support restore sessions that do not write back to binary logs.
2026-08-28 02:16:50 +02:00
Ilia Ross
f01d65a26e Add DNF versionlock support to Package Updates
This PR adds DNF 4 and DNF 5 versionlock support to Package Updates, including listing, holding, unholding, and explicitly updating held packages.

DNF 4 requires the versionlock plugin to be installed, while DNF 5 supports versionlock natively.

Hold controls are shown only when the versionlock command is available.

It also previews DNF transactions before confirmation so users can see which packages will be installed or updated in the table, similar to APT.
2026-08-23 23:03:46 +02:00
Ilia Ross
e695fbd0c7 Add APT package hold management to Package Updates
- Add an APT-only “Held updates” view while keeping held packages excluded from normal and scheduled updates.

- Allow administrators to hold or unhold packages from package details.

- Allow explicitly selected held packages to be updated once, then restore all existing package holds.

- Preserve configured `aptitude` behavior for regular installs while using `apt-get` for the held-package override.

Fixes #2689
2026-08-14 03:43:50 +02:00
Jamie Cameron
02cc3f6a67 Merge pull request #2805 from webmin/fix/opensuse-logrotate-drop-in-discovery-2682
Fix openSUSE logrotate vendor overlay handling
2026-08-13 15:36:43 -07:00
Ilia Ross
07f0ddfb6d Add shared test file helpers 2026-08-10 21:37:11 +02:00
Ilia Ross
199dae2562 Remove bundled Miniserv certificate and safely fall back to HTTP 2026-08-09 15:27:13 +02:00
Ilia Ross
137fbd5768 Fix to normalized XML-RPC scalar tag names
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
https://github.com/webmin/webmin/pull/2811
2026-08-05 15:17:21 +02:00
Ilia Ross
1b60ce4265 Fix Fail2Ban duration validation for line breaks 2026-08-01 18:19:10 +02:00
Ilia Ross
450ae37db2 Add fail2ban tests 2026-08-01 16:55:42 +02:00
Ilia Ross
7e41f339a3 Fix password reset handling for Unix-backed Webmin users
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
Close inactive / close-inactive (push) Has been cancelled
ⓘ Warn when a Webmin user matches a Unix account and allow choosing Unix authentication or a separate Webmin-only password. Preserve explicit and legacy password behavior with regression coverage.

https://forum.virtualmin.com/t/resetting-root-admin-password/137615/4
2026-07-23 17:25:39 +02:00
Ilia Ross
ac62ad5f94 Fix listing partially installed Debian packages
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
Close inactive / close-inactive (push) Has been cancelled
ⓘ Include partially installed dpkg packages in package listings and details while continuing to exclude removed and not-installed packages. Add regression coverage for all supported Debian package states.

277a919c27 (commitcomment-193125042)
2026-07-21 00:24:41 +02:00
Ilia Ross
cae7596303 Revert "Add Debian package system busy detection"
This reverts commit 8f44b698c9.
2026-07-20 23:59:49 +02:00
Ilia Ross
8f44b698c9 Add Debian package system busy detection
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
Close inactive / close-inactive (push) Has been cancelled
2026-07-20 00:22:07 +02:00
Ilia Ross
0eaf0ef80d Fix redirect ports and linked-server WebSocket routing
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
ⓘ Follow up on #2794 by making `redirect_port` work even when `redirect_host` is not set. Keep existing host precedence and correctly handle proxy headers, IPv6 addresses, default ports, and invalid port values.

ⓘ Fix linked-server by keeping the child URL recognizable to the parent, then generating the final WebSocket URL on the same host and port the browser is using. This keeps the connection working with the current Webmin session.
2026-07-15 20:38:41 +02:00
Ilia Ross
934073532f Fix to use the existing HTTP and FTP mode 7 callback 2026-07-14 02:27:10 +02:00
Ilia Ross
9dcdca7f1f Merge branch 'master' into dev/download-target-check 2026-07-14 00:58:07 +02:00
Ilia Ross
bf3cd03977 Fix to manually incorporated Jamie's 70011c1 change 2026-07-14 00:46:12 +02:00
Ilia Ross
64f67e63d5 Add regression coverage for warning-free empty values
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
https://github.com/webmin/webmin/issues/2793
2026-07-13 15:08:13 +02:00
Ilia Ross
1555224592 Fix to refactor download address checks to use callback bundles
ⓘ Extend HTTP and FTP download callbacks with destination validation while preserving legacy tracking callbacks and enforcing SSRF policy across redirects, proxies, caches, and direct/passive sockets.

https://github.com/webmin/webmin/pull/2789#discussion_r3567985773
2026-07-13 13:36:34 +02:00
Ilia Ross
f564a3127d Add regression tests previous patch
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
Close inactive / close-inactive (push) Has been cancelled
2026-07-12 23:50:48 +02:00
Ilia Ross
470b2b5533 Fix inet6 tests 2026-07-12 15:09:17 +02:00
Ilia Ross
1ca52c9a97 Add ACL controls for URL download destinations
Block non-public HTTP, HTTPS and FTP destinations by default in File Manager, Mailboxes and Upload and Download, with per-user IP/CIDR exceptions, redirect and proxy protection, cache isolation, and current-ACL enforcement for scheduled jobs.
2026-07-12 14:57:08 +02:00
Ilia Ross
2fb4eb1721 Fix linked-server uploads over partial TLS writes
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
ⓘ Stream linked-server request bodies in bounded chunks, retry partial SSL writes with byte-safe offsets, detect incomplete forwarding, and add regression coverage.

https://github.com/webmin/webmin/issues/2784
2026-07-10 14:48:47 +02:00
Ilia Ross
4fbb496002 Fix to resolve miniserv library path
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
Close inactive / close-inactive (push) Has been cancelled
ⓘ Load `miniserv-lib.pl` from the resolved `miniserv.pl` directory so symlinked daemon invocations find the helper library correctly.

f3b70b0458
2026-07-05 22:06:25 +02:00
Jamie Cameron
f3b70b0458 Merge pull request #2783 from webmin/dev/miniserv-helpers
Fix to extract miniserv helpers into library
2026-07-06 07:27:31 +12:00
Ilia Ross
f23620aebf Fix APT package arch normalization
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
ⓘ Normalize APT install-result names like `libtinfo6:amd64` to `libtinfo6` so scheduled updates can correctly detect dependency-updated packages and avoid false failure reports.

https://github.com/virtualmin/virtualmin-gpl/issues/1247
2026-07-05 14:26:35 +02:00
Ilia Ross
f71905fc83 Add new test for miniserv library loading 2026-07-05 03:11:21 +02:00
Ilia Ross
f16f99c074 Fix to extract miniserv helpers into library
ⓘ Move miniserv helper functions into `miniserv-lib.pl`, remove the caller guard from `miniserv.pl`, and keep tests loading the helper library directly while preserving daemon startup behavior.

https://github.com/webmin/webmin/pull/2695
2026-07-05 02:51:57 +02:00
Ilia Ross
01780834ba Fix to extract XML-RPC helpers from CGI entry point
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
Close inactive / close-inactive (push) Has been cancelled
ⓘ Move XML-RPC marshalling helpers into `xmlrpc-lib.pl`, remove the caller guard from `xmlrpc.cgi`, and preserve coverage through direct library tests plus the CGI invocation regression.

https://github.com/webmin/webmin/pull/2763
2026-07-05 01:56:56 +02:00
Ilia Ross
cc4bb35dee Update tests to recognize hex numeric HTML entities
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
2026-06-29 23:28:48 +02:00
Ilia Ross
d02f0b6cb5 Fix Let's Encrypt Certbot PEM path parsing
ⓘ Prevent Webmin from swallowing Certbot's key-path output when extracting PEM paths, while preserving IPv6 cert-name support and adding regression coverage.
2026-06-27 22:59:21 +02:00
Ilia Ross
c72d232e2f Fix to restrict Basic auth for websocket routes
ⓘ Require websocket routes to opt in with allow_basic_ws before Basic auth is accepted in session mode. Mark linked ws-link routes and no-cookie backend-session routes as allowed, while leaving normal session-backed routes unmarked.
2026-06-23 01:09:43 +02:00