ⓘ Skip invalid `#mysql50#.` entries in SQL and mysqlshow database listings so stray directories don't break the MariaDB page. Preserve valid dot-prefixed, hash-prefixed, and legacy database names.
Reproduce by creating an ordinary `.config` directory in MariaDB's data directory and opening the Webmin MariaDB module. On AlmaLinux, starting `user@27.service` also reproduces the issue because the globally enabled Podman user restart service creates `.config` and `.local` in the mysql account's home. Podman is one possible source, and the failure doesn't depend on it.
Fixes https://forum.virtualmin.com/t/error-accessing-mariadb-server-through-webmin/138118
This PR fixes Webmin being killed when package updates trigger overlapping restarts.
I found this while upgrading packages on a Debian 13 Pro, with the upgrade finished, but Webmin stopped responding, and tracing showed a second `SIGHUP` killing it during startup.
The fix keeps restart and reload signals pending across `exec()` and installs their handlers early in startup.
This PR adds `real_os_version_full` so the dashboard can show Debian point releases such as 12.15.
It preserves existing version comparisons and updates the field through installation, OS refreshes, and manual settings.
Older detection caches are refreshed automatically.
Fixes: https://forum.virtualmin.com/t/os-detection-version-with-point-release-on-dashboard/138091
This PR fixes WebSocket transfers that stall when unread data remains buffered.
Miniserv now drains buffered browser data before waiting for more network traffic.
The receive library avoids extra blocking reads and handles temporary read errors without disconnecting.
Tested and verified over HTTPS with Terminal and live stats on Rocky 10 and Ubuntu 26.04.
I discovered these issues while working on and testing new Cloudmin's SSH-based guest File Manager integration, which I decided to drop for now.
This PR fixes WebSocket routes being lost when miniserv configuration changes multiple times within one second.
Read `miniserv.conf` directly so locked updates use the current configuration.
The previous cache could reuse stale data because it compared modification times in whole seconds.
Add a regression test covering route additions and removals with an unchanged modification time.
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.
ⓘ 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.
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.
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.
- 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
ⓘ 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)
ⓘ 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.
ⓘ 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