457 Commits

Author SHA1 Message Date
Ilia Ross
95c974edc4 Fix comments on skipped Apache conditionals
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.
2026-09-20 17:22:17 +02:00
Jamie Cameron
a0a20063fa Call correct function to check file paths
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-09-19 21:01:05 -07:00
Jamie Cameron
1b029fb2c3 Merge pull request #2847 from webmin/dev/preserve-apache-comments
Add Apache comment preservation
2026-09-19 17:33:05 -07:00
Jamie Cameron
08d9ef3cd0 Add checks for allowed .htaccess file path
Some checks failed
Tests / prove (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
2026-09-18 16:57:34 -07:00
Jamie Cameron
fa98ace56d Merge branch 'master' of github.com:webmin/webmin 2026-09-18 15:43:47 -07:00
Jamie Cameron
991840e890 Use my instead of local 2026-09-18 15:43:40 -07:00
Ilia Ross
efe1dddca8 Fix to change Apache comments to use directive fields
https://github.com/webmin/webmin/pull/2847#issuecomment-5705632150
2026-09-17 01:46:50 +02:00
Ilia Ross
dcd929e7e3 Add Apache comment preservation
This PR fixes full-line comments being removed when Webmin rewrites Apache configuration blocks.
2026-09-17 00:07:52 +02:00
Ilia Ross
faaef530f2 Drop Apache comment preservation from this PR 2026-09-17 00:01:01 +02:00
Ilia Ross
3d27aca04a Fix nested Apache directive rewrites
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
2026-09-16 23:00:38 +02:00
Jamie Cameron
e3d6fa3c0a When editing a .htaccess file, don't update the file tracking when the master apache config was changed
Some checks failed
Close inactive / close-inactive (push) Has been cancelled
Package and upload artifacts / build (push) Has been cancelled
Tests / prove (push) Has been cancelled
https://github.com/virtualmin/virtualmin-gpl/issues/1276
2026-09-01 21:20:47 -07:00
KafamaG
78b728a531 Merge branch 'master' into dev/translation_tr
#2829 landed on master and touched 173 of the same keys this branch
rewrites, which is where the conflicts came from.

Resolved by rule rather than by hand: for any key #2829 already fixed
and merged, master's value wins (54 keys); everything else keeps this
branch's version. That keeps the diff against master limited to what is
genuinely new here, and avoids re-editing work that is already upstream.

It also avoids a regression. This branch was cut before #2829, so it
still carried the old double-encoded UTF-8 in nine mailboxes strings
(confirm_warnallf, left_autoreply, left_folders, left_forward,
left_pass, left_sig, mail_fromfilter, mail_selread, mail_subfilter).
Taking master's value for those keeps them fixed. A mojibake scan over
the whole tree after the merge reports 0 remaining lines.

master also added acl/forgot_sudouser, which is translated here, so
lang/tr is still complete at 31,523 of 31,523 keys.
2026-08-31 09:51:50 +03:00
KafamaG
02ca56139a Complete the Turkish module.info descriptions
Every module now has a reviewed desc_tr and longdesc_tr in
module.info.tr - 245 strings across 125 modules. Previously 37 were
reviewed, 194 came from module.info.tr.auto and 14 were missing
entirely (grub2, hardware-info, kea-dhcp, logviewer, nftables, systemd,
xterm), so those modules showed English titles in the Webmin menu.

The reviewed strings are removed from module.info.tr.auto, which now
holds only name_tr - the same split the de and ca translations use.
Thirty-six of those files became empty and are deleted.

Some of the machine text this replaces was wrong rather than just
clumsy:

  sarg          "Squid Report Generator" had become "Kalamar Rapor
                Oluşturucu" - the fish, not the proxy
  heartbeat     the product name was translated as "Kalp Atışı"
  cluster-cron  "Cron Jobs" had become "Cron İş İlanları" (job ads)
  proc          "renice" was translated as "rename"
  samba         "file and print shares" was split into "create a samba
                file" and "print the shares"
  exports, hpuxexports, sgiexports, inetd, init, mount, net
                each repeated the file path mid-sentence
  firewall,     the "(iptables)" and "(ip6tables)" qualifiers that
  firewall6     distinguish the two modules were dropped

Turkish capitalisation of English words was also wrong throughout
("İptables", "İnetd", "İscsitarget", "İnternet"), and three previously
reviewed strings were stored as double-encoded UTF-8 (cron/desc_tr,
mailboxes/desc_tr, mailboxes/longdesc_tr).

cluster-cron and ldap-server carried a stray desc_de_tr key - a German
key that had leaked into the Turkish file. It is removed.
2026-08-30 14:41:10 +03:00
KafamaG
35069d3018 Fix placeholder, markup and encoding defects in existing Turkish files
A consistency check of every lang/tr against its lang/en turned up 58
lines that were wrong independently of the missing translations. All of
them are fixed here:

Missing or wrong $N placeholders (the value silently disappears from
the message at runtime, or the wrong value is shown):
  acl/cert_eca, acl/hide_desc, adsl-client/index_stopdesc,
  apache/reconfig_ever, apache/log_files, apache/log_files_l,
  bind8/log_manual, dhcpd/listl_lfnotcont, fdisk/mkfs_desc1,
  fdisk/fsck_desc1, fdisk/tunefs_desc, hpuxexports/save_ehost,
  inittab/log_rename, mysql/index_ever, mysql/index_version,
  mysql/log_perm_create, mysql/log_perm_delete, mysql/log_perm_modify,
  sendmail/index_epath, sendmail/index_startmsg, sendmail/asave_ematch,
  sendmail/mailers_efile, sendmail/generics_efile,
  webalizer/index_ewebalizer, webalizer/index_econf

  cron/env_ename carried a $1 that lang/en does not have, and its text
  described a different error than the key means.

  adsl-client/index_stopdesc and inittab/log_rename each repeated $1
  where $2 was meant, so both values printed the same string.

HTML markup that did not match lang/en:
  bind8/mass_desc, dhcpd/index_dhcpdnotfound, firewall/index_existing,
  inetd/index_applymsg, mysql/index_nomod, mysql/index_nomods,
  samba/esync_msg, samba/viewu_list, sendmail/trusts_desc,
  sendmail/mailers_desc2, sendmail/domains_desc, squid/clear_msgclear,
  status/proc_thresh

  Several of these were also truncated mid-sentence, dropping a whole
  sentence of the original text; those are now translated in full.

Encoding:
  mailboxes/confirm_warnf was stored as double-encoded UTF-8 and
  displayed as mojibake. It also used $1 twice instead of $1 and $2.

Trailing whitespace:
  proc/kill_term, kill_hup, kill_stop, kill_cont

Untranslated strings:
  fdisk/select_* device descriptions, mount/irix_mode0, irix_mode0cd,
  shorewall/tunnels_ipsec:noah

  bind8/mass_desc previously translated the literal configuration
  keywords master, slave, stub and forward into Turkish; they are now
  left in English, since they are values the user has to type.
2026-08-30 14:34:56 +03:00
KafamaG
08e92093f3 Complete the Turkish translation for the apache module
Adds the 494 strings that apache/lang/tr was missing, so the module is now
fully translated, and removes apache/lang/tr.auto.

Apache configuration vocabulary is left in English so it still matches the
config files and documentation: directive and container names (Directory,
Files, Location, Proxy, Require, RequireAny, RequireAll, Allow/Deny/Order,
ServerName, Multiviews), protocol tokens (HTTP/1.1, HTTP/2, h2, h2c),
header names (ETag, Location:, Host:, Via:, Last-Modified), the .htaccess
filename, DBM, WebDAV, PROPFIND, suexec, gcache and the mod_* module
names.
2026-08-30 02:32:09 +03:00
KafamaG
666ff552fa Fix errors in Turkish (tr) language files
Corrects verifiable defects in the shipped Turkish translations across
25 modules. No .auto (machine-translated) files are touched.

Placeholder bugs (33 keys) - substitution variables were missing,
duplicated or renumbered relative to lang/en:

* fdisk/mkfs_desc1 used $1 twice, so the "all data will be permanently
  erased" confirmation named the filesystem type instead of the target
  device.
* apache/reconfig_ever linked to <a href='$1'> instead of $2, pointing
  the "module configuration" link at the version string.
* useradmin/export_eopen contained the Perl special variable $! rather
  than $1.
* adsl-client/index_stopdesc, inittab/log_rename, hpuxexports/save_ehost,
  mysql/log_perm_* and others repeated $1 where $2/$3 was intended.
* cron/env_ename referenced $1, which lang/en does not provide.

HTML markup bugs (19 keys) - tags were dropped or swapped, breaking
rendering or links:

* useradmin/batch_desc6 and batch_desc3 contained the literal strings
  "$batch_desc1" and "$batch_desc0" and rendered as plain text.
* bind8/mass_desc translated the literal named.conf keywords master,
  slave, stub and forward, which would lead users to enter invalid
  configuration values. These are now left untranslated.
* mysql/index_nomod, samba/esync_msg, squid/clear_msgclear and others
  lost <tt>/<b> pairs present in lang/en.

Encoding (10 keys) - mailboxes/lang/tr contained double-encoded UTF-8
(mojibake), e.g. "klasöründen" instead of "klasöründen".

Untranslated strings (96 keys) - htaccess-htpasswd/lang/tr was a verbatim
copy of lang/en and is now fully translated. Remaining English strings in
fdisk, mount, shorewall, webalizer, xinetd and firewall are translated.
Technical identifiers (LVM VG/LV, IPsec AH) are deliberately kept in
English.

All modified files are valid UTF-8, keep their original key order and
line count, and their placeholders now match lang/en exactly.
2026-08-30 01:20:42 +03:00
Ilia Ross
f5bf2be07b Add Apache process limit directive help 2026-06-21 23:25:15 +02:00
Ilia Ross
57d650cf9f Add help files for new Apache options
https://github.com/webmin/webmin/issues/1821
2026-06-21 23:03:19 +02:00
Ilia Ross
3f48d37e7a Add Apache 2.4 MPM process limit directives
Expose missing prefork, worker, and event MPM tuning directives under Apache Processes and Limits, including MaxRequestWorkers, ServerLimit, ThreadLimit, ThreadsPerChild, and spare-thread controls.

https://github.com/webmin/webmin/issues/1821
2026-06-21 22:52:13 +02:00
Imre Eilertsen
13a1021661 Update no 2026-06-15 13:48:13 +02:00
Ilia Ross
52d0382619 Fix regression and hide disabled default vhost files 2026-05-19 23:28:24 +02:00
Ilia Ross
d93fd6a4b6 Fix to harden vhost file handling
* Note: Resolve enabled-site link paths through ServerRoot and include disabled vhost file deletions in Apache config-test rollback coverage, with focused regressions.

https://github.com/webmin/webmin/actions/runs/26125036339/job/76836427985
2026-05-19 23:16:09 +02:00
Ilia Ross
a5be2f9d39 Add Debian-style sites-available file management to Apache
* Note: Bring the Apache module to parity with the Nginx module's Debian
sites-available/sites-enabled handling: list disabled vhost files
alongside active ones, toggle their state via symlink with apachectl
configtest rollback, and delete VirtualHost blocks from inactive files.
When Virtualmin manages a vhost, defer enable/disable to Virtualmin's
own forms instead of touching the symlink directly.

https://forum.virtualmin.com/t/enable-disable-toggle-buttons-in-ngnix-module/137238/4?u=ilia
2026-05-19 23:00:18 +02:00
Ilia Ross
68aab1c057 Fix to use proper API for ACL pages
Some checks failed
webmin.dev: webmin/webmin / build (push) Has been cancelled
[no-build]
2026-04-23 22:07:13 +02:00
Ilia Ross
19190a6f5b Fix ACL option name 2026-04-23 21:00:32 +02:00
Ilia Ross
cc9c51c42f Fix potential stored XSS 2026-04-22 13:59:42 +02:00
Ilia Ross
f37a73f0fb Add support for Apache 2.4 access control editing
https://github.com/webmin/webmin/issues/1700#issuecomment-4226653490
2026-04-11 17:44:46 +02:00
Jamie Cameron
3a1ea4682d Fix merge conflict 2026-02-10 10:24:58 -08:00
Jamie Cameron
3713ee01b8 The server_root function doesn't need the global config as a parameter 2026-02-10 10:21:22 -08:00
Ilia Ross
c85d04cc74 Fix to use proper validation before writing files 2026-02-10 16:23:58 +02:00
Ilia Ross
a6bd5c6ebc Fix to use quotemeta to prevent shell injection in Apache module 2026-02-10 15:57:07 +02:00
Jamie Cameron
b1fe988f57 Add an extra check for a manual config change that breaks the index 2026-01-04 13:35:24 -08:00
Ilia Ross
0955695a15 Fix to place apply last; looks better and makes a bit more sense 2025-11-09 00:35:25 +02:00
Jamie Cameron
ce6bbe44ff Factor out code to create the site file, and add a function to force a re-gen 2025-06-15 08:24:17 -07:00
Jamie Cameron
c5e8c77526 Keep the words array in sync with value 2025-05-27 19:33:52 -07:00
Jamie Cameron
825ce6154c Don't reference config array entries that don't exist 2025-05-26 17:05:51 -07:00
Jamie Cameron
ea7b52d65b dummy directive doesn't use up any lines 2025-05-25 19:53:11 -07:00
Jamie Cameron
f5ff544439 Use format params 2025-05-10 21:58:17 -07:00
Jamie Cameron
24d17dc0c8 Keep the split value in sync with the full value 2025-05-10 16:36:03 -07:00
Ilia Ross
f880192526 Remove languages with 0% coverage
https://github.com/webmin/webmin/issues/2403#issuecomment-2652613588
2025-02-12 13:19:49 +02:00
Jamie Cameron
fcdebf6891 Some systems use the event MPM instead of prefork https://github.com/webmin/webmin/issues/2365 2025-01-21 20:05:15 -08:00
Jamie Cameron
506f7a1819 If not binding to an IP, add a Listen directive for a custom port if needed https://github.com/webmin/webmin/issues/2341 2024-12-21 15:41:33 -08:00
MacSteini
162206949f Consecutive Spaces Replacement
Replaced multiple consecutive spaces with a single space
2024-12-16 16:57:09 +00:00
MacSteini
5ea0cc6b42 Trailing Spaces Removal
Removed trailing spaces
2024-12-16 15:16:55 +00:00
Ilia Ross
a6e0b3cee5 Update translations and include the new Polish translation 2024-11-16 14:03:39 +02:00
MacSteini
f87cc4a121 Update de 2024-09-07 15:43:38 +01:00
MacSteini
2ba7e4b071 Delete apache/lang/de.auto 2024-09-05 23:20:06 +01:00
MacSteini
33b4223183 Update de 2024-09-05 23:19:56 +01:00
leangjia
75095eab06 Updated Chinese translations 2024-09-05 17:16:57 +08:00
Ilia Ross
79b840024a Update translations 2023-11-14 20:16:19 +02:00