This patch fixes FTPS backups failing on servers that require TLS session reuse.
It reuses the control connection's TLS session for data uploads.
It adds coverage for an actual passive-mode upload and was verified against a live ProFTPD server.
https://github.com/webmin/webmin/issues/2849#issuecomment-5752478469
This patch fixes the Backup Configuration destination selector by using the new select-based UI.
It keeps existing field names and backup behavior unchanged.
It also ensures browser downloads bypass AJAX and submit correctly.
This patch fixes comments before skipped `IfModule`, `IfDefine`, and `IfVersion` blocks being attached to the next parsed directive.
For example:
```apache
# SSL-only settings
<IfModule mod_ssl.c>
SSLEngine on
</IfModule>
ServerName example.test
```
When `mod_ssl` was unavailable, Webmin attached `# SSL-only settings` to `ServerName`. Deleting `ServerName` could then remove the wrong line and produce:
```apache
# SSL-only settings
<IfModule mod_ssl.c>
SSLEngine on
```
This fix clears comments belonging to skipped conditionals. Deleting `ServerName` now leaves the complete `IfModule` block unchanged.
This PR fixes incorrect line numbers when Apache directives contain nested blocks.
It preserves comments during rewrites and correctly tracks every nested line.
This prevents Virtualmin from corrupting custom Apache configurations.
Fixes: https://github.com/virtualmin/virtualmin-gpl/issues/1153
RFC 9989 (DMARCbis) removes the pct tag, but the DMARC form validated
the percentage as mandatory and always assigned it, so every record
written through Webmin contained pct=.
Treat the field like the sp field directly below it: when it is empty,
delete the tag. Values 0-100 are still accepted and validated for
anyone who deliberately uses pct during a rollout. join_dmarc() already
skips tags with an empty value, so no change was needed there.
Fixes#2843
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This PR fixes concurrent Nginx updates using stale config data.
It reloads the config after locking and safely handles nested locks and included files.
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.