Compare commits

...

277 Commits

Author SHA1 Message Date
Jamie Cameron
3d300b5fb6 Handle perl errors calling PEM_read_bio_X509 more gracefully 2025-11-10 21:24:36 -08:00
Jamie Cameron
8ff9b75953 Merge branch 'master' of github.com:webmin/webmin 2025-11-10 19:25:55 -08:00
Jamie Cameron
06f75db35f Get the actual version if one cannot be guessed from the config file path
https://github.com/virtualmin/virtualmin-gpl/issues/1151
2025-11-10 19:25:48 -08:00
Ilia Ross
4f851d71b1 Fix to improve displaying file path and preview 2025-11-11 01:36:03 +02:00
Jamie Cameron
2133d5d4bf Version bump 2025-11-09 15:16:10 -08:00
Ilia Ross
42e5d45232 Update changelog for 2.600 2025-11-09 21:51:52 +02:00
Jamie Cameron
3e0a08b7ef Merge branch 'master' of github.com:webmin/webmin 2025-11-08 17:18:30 -08:00
Jamie Cameron
f2f40f1227 Fix clearing of default email 2025-11-08 17:16:30 -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
Ilia Ross
fb3dd9f43d Fix label followed by input consistency
[no-build]
2025-11-09 00:06:13 +02:00
Ilia Ross
9f82fdc808 Fix label for proper button color and icon 2025-11-09 00:02:58 +02:00
Ilia Ross
573f3d894a Fix to improve the cron tip text and use note for better UI 2025-11-09 00:00:52 +02:00
Ilia Ross
ff9348c056 Fix to filter out user passed page
[no-build]
2025-11-08 18:26:35 +02:00
Ilia Ross
2051bfe6dc Fix button name consistency
[no-build]
2025-11-08 18:26:18 +02:00
Ilia Ross
42e228103b Fix button name consistency 2025-11-07 19:48:31 +02:00
Ilia Ross
29d100e8eb Add support for displaying theme config link if supported
[no-build]
2025-11-06 21:03:50 +02:00
Ilia Ross
4e4234c87e Fix button title consistency
[no-build]
2025-11-05 19:05:12 +02:00
Ilia Ross
6d9aa69cb2 Fix to show nicer message 2025-11-05 15:20:14 +02:00
Ilia Ross
dbc83bae55 Fix title consistency
[no-build]
2025-11-05 14:14:08 +02:00
Ilia Ross
d37b790492 Fix not to drop that last empty paragraph as it break one pixel-accurate UI 2025-11-04 00:52:19 +02:00
Ilia Ross
34616c5fbd Fix not to print extra paragraph for consistency 2025-11-03 01:06:49 +02:00
Ilia Ross
c57651cd46 Fix schedule select 2025-11-03 00:57:37 +02:00
Ilia Ross
79f91c1468 Fix not to display pointless table header 2025-11-02 20:55:15 +02:00
Jamie Cameron
f49f86dc96 Don't even try to look for a BIND zone if it's not installed 2025-11-01 10:49:25 -07:00
Jamie Cameron
ef1e9bbf93 Fix a comment 2025-11-01 10:48:07 -07:00
Jamie Cameron
84348e3fc4 Merge branch 'master' of github.com:webmin/webmin 2025-10-29 22:03:34 -07:00
Jamie Cameron
1a52bf4d72 Fix quoting of args 2025-10-29 22:02:29 -07:00
Ilia Ross
d8a74cd275 Fix to keep print consistent for single line messages too 2025-10-27 17:53:20 +02:00
Ilia Ross
225def99ec Fix header consistency 2025-10-27 17:50:37 +02:00
Jamie Cameron
1c9e8b5a25 Properly respect the global notification address 2025-10-26 21:44:14 -07:00
Jamie Cameron
e0e5ef65f8 Properly respect the global notification address 2025-10-26 21:32:47 -07:00
Jamie Cameron
5d67cdb7c1 Properly respect global default notification address 2025-10-26 21:17:17 -07:00
Jamie Cameron
c7538bc5be This message is no longer used 2025-10-26 21:07:18 -07:00
Jamie Cameron
7959bedfe4 Merge branch 'master' of github.com:webmin/webmin 2025-10-26 14:01:21 -07:00
Ilia Ross
4c6511f2c1 Fix to stress destinations 2025-10-26 16:46:39 +02:00
Ilia Ross
42c8b02b3b Hide RBAC if its only for Solaris 2025-10-26 11:42:39 +02:00
Ilia Ross
fd25d65afe Fix to keek labels more consistent 2025-10-26 11:35:15 +02:00
Ilia Ross
ae684ff02c Fix shell name is never that long 2025-10-26 10:36:33 +02:00
Jamie Cameron
37f1b52391 Don't try to run the last command if it's not installed
https://github.com/webmin/webmin/discussions/2161
2025-10-25 20:00:04 -07:00
Ilia Ross
067b3e59b0 Add lsof to recommended package 2025-10-25 10:45:28 +03:00
Ilia Ross
8e0c6ffb14 Add various improvements and bug fixes to proc module 2025-10-25 00:34:21 +03:00
Ilia Ross
34a2cdd75d Fix to keep one line panel always closed 2025-10-23 23:14:27 +03:00
Ilia Ross
25b3f95d9c Fix for details to be clickable 2025-10-23 22:49:15 +03:00
Ilia Ross
5d8196fe95 Add support to provide detailed Webmin server stats
https://forum.virtualmin.com/t/is-this-memory-used-a-bit-high/135556/6?u=ilia
2025-10-22 17:04:11 +03:00
Jamie Cameron
7f93d6ddd8 Merge branch 'master' of github.com:webmin/webmin 2025-10-21 19:47:18 -07:00
Jamie Cameron
5ed06227a8 Escape command flags 2025-10-21 19:47:11 -07:00
Ilia Ross
0576b027c0 Fix to use proper detail box
[no-build]
2025-10-21 02:23:42 +03:00
Ilia Ross
31e2f533f6 Fix to remove ugly single dot from package description in new lines 2025-10-21 01:12:39 +03:00
Ilia Ross
51eef83562 Fix formatting and comments 2025-10-21 01:07:42 +03:00
Ilia Ross
efcfd3d20e Add support for displaying Debian package install time 2025-10-21 01:00:39 +03:00
Ilia Ross
4857976e26 Fix not to choke on epoc, just ignore it 2025-10-21 00:32:55 +03:00
Ilia Ross
3633469b4e Add ability to show package URL https://github.com/virtualmin/virtualmin-gpl/issues/1141 2025-10-21 00:31:50 +03:00
Ilia Ross
f9373eacc2 Add ability to install multiple PHP extensions at once 2025-10-19 20:44:56 +03:00
Ilia Ross
5ed99dd7eb Fix to use unique key name 2025-10-19 19:53:16 +03:00
Jamie Cameron
e7cf393f85 Merge branch 'master' of github.com:webmin/webmin 2025-10-18 20:42:54 -07:00
Jamie Cameron
f5c158ef6a Respect global notification address 2025-10-18 20:42:48 -07:00
Ilia Ross
5b71274aa1 Fix to track email change time is something we need when moving mail around 2025-10-18 00:00:38 +03:00
Ilia Ross
410cdbd01b Update SECURITY.md
For https://github.com/webmin/webmin/security/policy
2025-10-16 11:51:04 +03:00
Ilia Ross
34263aae1f Fix endless loop created by ReadParseMime; fix other bugs 2025-10-15 23:08:59 +03:00
Jamie Cameron
3f8f9539a2 Fix editing of forwarding rule
https://github.com/webmin/webmin/issues/2573
2025-10-14 21:26:51 -07:00
Jamie Cameron
cb5f4e9d39 Check that uploaded file has a filename 2025-10-14 14:05:10 -07:00
Ilia Ross
2acfc37745 Make uptracker use temp dir 2025-10-14 13:59:20 +03:00
Ilia Ross
ffe844d03d Check user later 2025-10-14 13:11:00 +03:00
Jamie Cameron
12edb92b6a Use the ReadParseMime function properly 2025-10-13 21:41:06 -07:00
Jamie Cameron
8517ee6653 Fix the ReadParseMime direct mode function to sanitise the uploaded path 2025-10-13 21:40:34 -07:00
Ilia Ross
447727ae68 Fix to always rename the file as effective user #1054 2025-10-13 23:39:02 +03:00
Ilia Ross
28ea58af07 Fix dump directory to work for all users 2025-10-13 23:14:24 +03:00
Jamie Cameron
48c5fc2138 System variables use _, but command line variables use -
https://github.com/webmin/webmin/issues/2568
2025-10-12 21:47:40 -07:00
Jamie Cameron
b9e3363a68 Merge branch 'master' of github.com:webmin/webmin 2025-10-12 18:04:22 -07:00
Jamie Cameron
f0f4f72d73 Add UI options for enabling the slow query log
https://github.com/webmin/webmin/issues/2560
2025-10-12 18:04:16 -07:00
Ilia Ross
9a493e581e Fix not to double-quote already quoted param
dfbf446092
2025-10-10 12:43:51 +03:00
Jamie Cameron
360236d68b Properly distinguish between global and custom webmin email
https://github.com/webmin/webmin/issues/2295
2025-10-09 21:37:12 -07:00
Jamie Cameron
7e5007e050 Merge branch 'master' of github.com:webmin/webmin 2025-10-09 14:56:57 -07:00
Jamie Cameron
dfbf446092 Add quotes around params where needed
https://github.com/webmin/webmin/issues/2572
2025-10-09 14:55:26 -07:00
Ilia Ross
178c6198f2 Fix EOL library explosion for OS in development #2121 2025-10-09 16:38:49 +03:00
Ilia Ross
198e395833 Update workflow 2025-10-06 19:35:16 +03:00
Ilia Ross
4443982256 Add new icons for BIND module #2569 2025-10-05 15:18:45 +03:00
Ilia Ross
8866833130 Update existing BIND A and AAAA icons 2025-10-05 13:41:22 +03:00
Ilia Ross
b1d407a52d Fix to display AAAA link next to A #2569 2025-10-05 12:26:38 +03:00
Ilia Ross
a7478ac4c9 Fix IP type for consistency 2025-10-05 12:20:25 +03:00
Ilia Ross
8957333dca Fix not to quotemeta hardcoded flag #2159 2025-10-05 01:17:28 +03:00
Ilia Ross
1caf80bbc1 Update changelog 2025-10-04 17:15:46 +03:00
Ilia Ross
18c12c7f8b Fix to correctly fetch "PPTP VPN Client" version as --help returns different output
https://github.com/webmin/webmin/issues/2567
2025-10-04 12:35:26 +03:00
Ilia Ross
78a3ab924d Fix to display error message correctly in PPTP VPN Client 2025-10-04 12:29:03 +03:00
Ilia Ross
652f2db774 Fix tooltips 2025-10-04 12:17:28 +03:00
Jamie Cameron
8b58d7cce3 Merge branch 'master' of github.com:webmin/webmin 2025-10-03 20:04:19 -07:00
Jamie Cameron
52f87286a4 Add tooltips for white and black lists 2025-10-03 19:43:46 -07:00
Ilia Ross
28c7939636 Fix to check if helper command is running as root 2025-10-04 01:12:05 +03:00
Ilia Ross
face8319f2 Fix to safely kill only targeted scripts 2025-10-04 00:45:21 +03:00
Jamie Cameron
7a651027bf New version bump 2025-10-02 20:15:30 -07:00
Jamie Cameron
bbf317803a Merge pull request #2565 from webmin/dev/check-https-redirect-later
Fix to redirect to HTTPS when we get the host from the browser URL
2025-10-02 19:25:35 -07:00
Ilia Ross
d694649872 Fix to safely get user hostname from URL 2025-10-03 03:19:54 +03:00
Ilia Ross
1091434ff4 Add more days to view log since #2564 2025-10-02 16:24:41 +03:00
Ilia Ross
991795c296 Fix to redirect to HTTPS when we get the host from the browser URL 2025-10-02 15:52:14 +03:00
Ilia Ross
8932f3bd6a Fix to truly move option tag rather than recreating
*Note: It keep existing styles and using index from "add()" will also put moved options to the top of the select and make them clearly visible
2025-10-02 13:36:22 +03:00
Ilia Ross
b3ec083c7b Update changelog 2025-10-01 23:45:22 +03:00
Ilia Ross
da18dea780 Update changelog release date to today (night) 2025-10-01 20:19:58 +03:00
Ilia Ross
35f8061049 Fix to kill Webmin subprocesses during RC stop on FreeBSD and other systems 2025-10-01 20:12:54 +03:00
Ilia Ross
e6e79a7eb5 Fix to replace vmstat with /proc sampler for same output with much lower overhead 2025-10-01 18:35:20 +03:00
Ilia Ross
a4d1280ef7 Fix copy-paste artifact 2025-10-01 14:34:40 +03:00
Ilia Ross
cc2cc62717 Fix to query specific fields in FreeBSD memory stats collection
*Note: Replace `sysctl -a` with targeted queries for only the 5 needed values (hw.physmem, hw.pagesize, vm.stats.vm.v_*_count) instead of dumping thousands of kernel params. This reduces `get_memory_info()` overhead from 25% CPU to ~5% CPU when called by real-time monitoring every 1-3 seconds.
2025-10-01 14:33:22 +03:00
Ilia Ross
c59591e3de Update changelog 2025-10-01 01:15:54 +03:00
Ilia Ross
fc4e2751dc Fix broken redirect when there is no way to get FQDN
*Note: "$host = &get_socket_name(SOCK, $ipv6fhs{$s});" won't return FQDN if it can't be resolved (or if it isn't in /etc/hosts), breaking some redirects, most likely proxied ones that aren't using HTTPS in its config.
2025-10-01 01:03:45 +03:00
Ilia Ross
4dc64f5028 Fix recommended package name (again) 2025-09-30 23:51:27 +03:00
Ilia Ross
01d2323496 Fix to mention IO::Socket::INET6 too 2025-09-30 22:28:08 +03:00
Ilia Ross
4c8b0fe008 Update changelog for 2.520 2025-09-30 17:26:46 +03:00
Jamie Cameron
e44ec464eb Merge branch 'master' of github.com:webmin/webmin 2025-09-29 13:35:49 -07:00
Jamie Cameron
98c54fe3fb Include config files by default
https://github.com/webmin/webmin/issues/2562
2025-09-29 13:35:43 -07:00
Ilia Ross
86968bfc31 Fix support for other Raspberry Pi sensors #2545 2025-09-29 18:23:10 +03:00
Ilia Ross
956ad7ed0f Dev: Trigger rebuilt for testing purposes for all modules
[no-commit-check]
2025-09-28 02:05:04 +03:00
Ilia Ross
a0d99e0a31 Dev: Trigger rebuilt for testing purposes 2025-09-28 02:02:11 +03:00
Ilia Ross
f27b1415be Fix to remove extra space
*Note: Made to trigger a re-built for testing purposes
2025-09-28 01:27:54 +03:00
Ilia Ross
1f4b467ea8 Fix to never mess around with headers; no headers check log 2025-09-28 01:20:29 +03:00
Ilia Ross
95423c7425 Fix not to loose prefix 2025-09-27 20:09:52 +03:00
Ilia Ross
89d23c5aa8 Fix for tar builds have no release but consider edition
*Note: Release for tar files should exist, however edition that can be passed like .gpl or .pro should exist
2025-09-27 20:06:57 +03:00
Ilia Ross
be3fcb89b0 Fix to remove release number from tar builds as never applicable 2025-09-27 18:28:52 +03:00
Ilia Ross
25fa7c589d Fix to add prefix for tar builds too 2025-09-27 03:50:54 +03:00
Ilia Ross
c86c45b10a Fix to keep release number too in tar builds 2025-09-27 03:00:44 +03:00
Ilia Ross
f10540bd54 Fix to add a flag to copy tar build too 2025-09-27 02:08:45 +03:00
Jamie Cameron
388f51843f Merge pull request #2558 from webmin/dev/remove-bottleneck-of-shelling-out
Fix to remove significant bottleneck of shelling out
2025-09-25 20:28:21 -07:00
Ilia Ross
7a723719da Fix to recommend Sys::Syslog module #2557 2025-09-25 15:33:52 +03:00
Ilia Ross
a027ad5dd6 Fix variable names to avoid ambiguity
* Note: Discussed here:
https://github.com/webmin/webmin/pull/2553#issuecomment-3328436525
2025-09-25 15:23:06 +03:00
Ilia Ross
d99a24b045 Fix to remove significant bottleneck of shelling out 2025-09-25 14:48:14 +03:00
Jamie Cameron
f08ad4eb19 Merge branch 'master' of github.com:webmin/webmin 2025-09-24 20:32:47 -07:00
Jamie Cameron
df97b4a419 Gracefully handle monitor types that don't exist
https://forum.virtualmin.com/t/finally-upgraded-and-a-problem/135204
2025-09-24 20:32:40 -07:00
Jamie Cameron
1ef0914610 Merge pull request #2553 from webmin/dev/further-fixes-to-ssl-host
Add final fixes to address ongoing issue with checking remote host
2025-09-24 20:24:28 -07:00
Ilia Ross
97678653c6 Fix to prefer SSL_HOST over HTTP_HOST 2025-09-24 16:04:19 +03:00
Ilia Ross
3717dfb505 Revert "Fix to correctly pick remote host based on connection"
This reverts commit 55b5739287.
2025-09-24 15:11:26 +03:00
Ilia Ross
e5d6c5627d Add back SSL host cert check but only in SSL mode; show faked host (HTTP_HOST) first for clarity 2025-09-24 14:37:18 +03:00
Ilia Ross
e194e2d500 Revert "Fix to make sure SSL_HOST also has port set"
This reverts commit adf36a177d.
2025-09-24 14:28:54 +03:00
Jamie Cameron
d5a22a592f Cache reads of the same cert file 2025-09-23 17:10:55 -07:00
Jamie Cameron
890a4ffd3f Valid http host header against cert name, as it may be different from the SSL hostname 2025-09-23 17:05:32 -07:00
Ilia Ross
4e229d8adb Fix to show clear warning when trying to reset password over insecure connection 2025-09-24 00:15:12 +03:00
Ilia Ross
d1ee0a5ed6 Fix not to completely forbid password reset without SSL 2025-09-23 23:36:09 +03:00
Ilia Ross
cd489ccefc Fix not to limit to valid SSL certificate, as self-signed is also valid and safe enough 2025-09-23 23:11:44 +03:00
Ilia Ross
55b5739287 Fix to correctly pick remote host based on connection 2025-09-23 22:35:16 +03:00
Ilia Ross
adf36a177d Fix to make sure SSL_HOST also has port set 2025-09-23 22:21:08 +03:00
Ilia Ross
9393162b0e Add a complete overhaul of var_dump, which is now portable
*Note: Can now be easily used in "miniserv.pl" or anywhere else. Supports multiple passed params.
2025-09-23 18:58:08 +03:00
Jamie Cameron
287fb3cb81 Only allow forgotten password reset when in SSL mode and hostname is valid 2025-09-22 21:42:26 -07:00
Jamie Cameron
61b2603e06 Add check for same hostname 2025-09-22 21:14:07 -07:00
Jamie Cameron
eb02824bfc Detect if SSL hostname is valid for the cert being used, and pass it to an environment variable 2025-09-22 21:13:46 -07:00
Ilia Ross
6191a222ae Revert "Fix to make sure the mail URL uses a well-known host name"
This reverts commit e88a77d32a.
2025-09-23 02:22:17 +03:00
Ilia Ross
2ac82016aa Revert "Perfect previous code"
This reverts commit 8f987d21a9.
2025-09-23 02:22:06 +03:00
Ilia Ross
8f987d21a9 Perfect previous code 2025-09-21 22:54:25 +03:00
Ilia Ross
e88a77d32a Fix to make sure the mail URL uses a well-known host name 2025-09-21 21:47:12 +03:00
Ilia Ross
5231b31ddd Add classes for text colors 2025-09-20 21:22:35 +03:00
Ilia Ross
5c5d5fe699 Fix printing bottom button row
https://forum.virtualmin.com/t/clarifying-how-to-create-custom-links/135115?u=ilia
2025-09-17 22:07:57 +03:00
Ilia Ross
34fba22799 Revert "Dev: Testing build script issues for separate modules"
This reverts commit a708e5f6e9.
2025-09-17 04:30:23 +03:00
Ilia Ross
a708e5f6e9 Dev: Testing build script issues for separate modules 2025-09-17 01:01:17 +03:00
Ilia Ross
f7058f10b4 2.510 2025-09-16 20:11:26 +03:00
Jamie Cameron
a4df380e2e new version bump 2025-09-16 09:19:34 -07:00
Jamie Cameron
70d1c843fc Merge branch 'master' of github.com:webmin/webmin 2025-09-15 15:37:13 -07:00
Jamie Cameron
1b38d806fc Make sure re-signing period is less than 30 days
https://github.com/webmin/webmin/issues/2550
2025-09-15 15:37:06 -07:00
Ilia Ross
f8d7e8810a Fix new line
*Note: For devel purposes. I expect a separate package "webmin-custom" rebuilt.
2025-09-12 15:17:08 +03:00
Jamie Cameron
43d5355114 201 is a valid OK resoonse code 2025-09-11 18:07:46 -07:00
Jamie Cameron
87d39127ef Put back english
https://github.com/webmin/webmin/issues/2547
2025-09-10 21:13:55 -07:00
Jamie Cameron
825d54adc4 Small version bump 2025-09-07 20:51:21 -07:00
Jamie Cameron
cbaff19725 Add option, disabled by default, to allow use of ALIAS records
https://github.com/webmin/webmin/issues/2095
2025-09-06 10:33:51 -07:00
Jamie Cameron
ece2ff6a1e Merge branch 'master' of github.com:webmin/webmin 2025-09-06 10:09:52 -07:00
Jamie Cameron
6b71562abf Auto-select the correct mode when uploading a new cert 2025-09-06 10:08:02 -07:00
Ilia Ross
a73210adc9 Fix to show FAN even if RPM is zero 2025-09-06 18:51:36 +03:00
Ilia Ross
c6d9d0338f Update changelog 2025-09-06 16:47:35 +03:00
Ilia Ross
5066534a40 Add Squid 7 support
https://forum.virtualmin.com/t/squid-version-7-1-not-support-in-webmin-any-solution-please/134609?u=ilia
2025-09-06 16:46:29 +03:00
Ilia Ross
84a417bd6e Update links and name 2025-09-06 13:25:53 +03:00
Ilia Ross
90c31af379 Update changelog for upcoming 2.501 2025-09-06 00:52:11 +03:00
Ilia Ross
1453508592 Add support for Raspberry Pi sensors #2539 #2517 2025-09-06 00:44:10 +03:00
Ilia Ross
35455f04e6 Fix comment 2025-09-05 18:16:16 +03:00
Ilia Ross
220d3124ef Merge pull request #2536 from Pedro-Cunha/webmin-setup-repo-repokey-perm
webmin-setup-repo.sh: Set mode of repo key to 644 for deb distros
2025-09-04 10:03:04 +03:00
Pedro Cunha
8b88034335 webmin-setup-repo.sh: Set mode of repo key to 644 for deb distros 2025-09-04 08:58:44 +02:00
Ilia Ross
e5bff8f31b Merge branch 'master' of github.com:webmin/webmin 2025-09-04 01:31:11 +03:00
Ilia Ross
ba4e72dfc2 Update changelog 2025-09-04 01:30:50 +03:00
Jamie Cameron
45eaad6eff New version bump 2025-09-03 15:29:40 -07:00
Jamie Cameron
cd113a468a Fix duplicate string 2025-09-03 15:29:01 -07:00
Ilia Ross
4c6ffd19a4 Add support for MariaDB 15 in Debian 13 2025-09-04 00:56:45 +03:00
Pedro Cunha
92e71e9ba3 webmin-setup-repo.sh: Set mode of repo key to 644 for deb distros 2025-09-03 15:33:15 +02:00
Ilia Ross
e56ea150fe Fix flag names consistency 2025-09-03 14:40:37 +03:00
Ilia Ross
e191220178 Add flags to skip Webmin module's info fields 2025-09-03 14:36:56 +03:00
Ilia Ross
097ef22bbc Add flags to skip module's info fields 2025-09-03 12:41:27 +03:00
Ilia Ross
66be8e9c20 Revert "Respect --rpm-recommends flag"
This reverts commit 81aa781bc9.
2025-09-02 13:00:36 +03:00
Pedro Cunha
cf6b79b740 webmin-setup-repo.sh: Set mode of repo key to 644 for deb distros 2025-09-02 10:13:13 +02:00
Jamie Cameron
81aa781bc9 Respect --rpm-recommends flag 2025-09-01 20:33:55 -07:00
Jamie Cameron
69b707e945 Enable sudo by default on RPM-based systems
https://forum.virtualmin.com/t/almalinux-no-login-create-user/134806
2025-09-01 20:02:44 -07:00
Ilia Ross
1424e248ff Fix to use correct directive names for control path 2025-09-02 00:25:19 +03:00
Ilia Ross
249dabde7e Fix support for index and control files location with Dovecot 2.4 2025-09-01 23:58:22 +03:00
Ilia Ross
443883d364 Fix to improve API name 2025-09-01 23:20:13 +03:00
Ilia Ross
156cb80104 Add support for Dovecot 2.4 in "Mail Files" page 2025-09-01 19:49:47 +03:00
Ilia Ross
0885a17f55 Add support for Dovecot 2.4 in "User and Login Options" page 2025-09-01 19:22:35 +03:00
Ilia Ross
0ffaed090a Fix to revert disabling "unsupported pages" in Dovecot 2.4
This reverts commit c2c99e3305.
2025-09-01 19:18:21 +03:00
Ilia Ross
55013abadc Fix missing LOGIN auth 2025-09-01 19:17:11 +03:00
Jamie Cameron
83a85aed93 Add support for mail_driver directive 2025-08-31 18:52:52 -07:00
Jamie Cameron
81b0bee9ee Merge branch 'master' of github.com:webmin/webmin 2025-08-31 17:48:22 -07:00
Jamie Cameron
b53504dd01 POP3 is so rarlely used that we can just drop the UIDL format option 2025-08-31 17:48:16 -07:00
Ilia Ross
c2c99e3305 Fix to disable unsupported pages for now in Dovecot 2.4 2025-08-31 22:36:15 +03:00
Ilia Ross
671c62289d Fix Dovecot 2.4 "SSL Configuration" page work 2025-08-31 22:30:09 +03:00
Jamie Cameron
d296b83192 Merge branch 'master' of github.com:webmin/webmin 2025-08-30 20:50:59 -07:00
Jamie Cameron
1d898d83fb Fix another case where version is compared wrong
https://forum.virtualmin.com/t/tlsa-rrsig-fail/134634
2025-08-30 20:49:12 -07:00
Ilia Ross
90fa7fede0 Fix to return actual Postfix status correctly
https://github.com/webmin/webmin/issues/2534
2025-08-30 15:04:08 +03:00
Jamie Cameron
415e7116f9 disable_plaintext_auth has been renamed 2025-08-29 22:24:20 -07:00
Jamie Cameron
033d94483f Support new mail_path directive 2025-08-29 21:31:58 -07:00
Jamie Cameron
69035e0a34 Merge branch 'master' of github.com:webmin/webmin 2025-08-29 15:29:32 -07:00
Jamie Cameron
bab8d7a0f0 Handle case where Postfix isn't even installed
https://github.com/webmin/webmin/issues/2534
2025-08-29 15:29:08 -07:00
Ilia Ross
9e6ae753e0 Update change log for upcoming Webmin version 2.500 2025-08-30 01:07:03 +03:00
Ilia Ross
42b6cac7b4 Fix words consistency 2025-08-30 01:04:54 +03:00
Ilia Ross
6ca908cf80 Add using relative dates in some pages where it makes sense 2025-08-29 15:32:41 +03:00
Ilia Ross
3be8a327ad Add API to display relative dates 2025-08-29 15:13:27 +03:00
Ilia Ross
16110e3e3e Fix last logins on dashboard to show usernames, and for admin display all users from the past 3 days 2025-08-27 16:54:44 +03:00
Ilia Ross
8f508724e4 Fix icon 2025-08-23 11:57:59 +03:00
Ilia Ross
e2646af3ab Fix title 2025-08-23 11:52:01 +03:00
Ilia Ross
ef55f007a4 Fix CPU load stats on macOS
https://forum.virtualmin.com/t/cpu-load-stats-are-incorrect-in-macos/134723/7?u=ilia
2025-08-21 20:42:35 +03:00
Ilia Ross
613b9e5ffa Add support to show last boot logs
https://forum.virtualmin.com/t/previous-boot-log/134731?u=ilia
2025-08-21 12:22:18 +03:00
Jamie Cameron
06744537d6 What if user isn't set at all 2025-08-20 16:17:37 -07:00
Jamie Cameron
3925dd829b Merge branch 'master' of github.com:webmin/webmin 2025-08-19 14:26:35 -07:00
Jamie Cameron
e5bff72e57 Return a useful error if IPC::Open3 is missing 2025-08-19 14:25:01 -07:00
Ilia Ross
dd445a67f1 Fix to add identifier for pre tag 2025-08-19 22:45:46 +03:00
Ilia Ross
29a4b6b598 Add .editorconfig #2531 2025-08-19 11:44:39 +03:00
Jamie Cameron
56729f7e3d Add option to customized the SMTP login
https://github.com/webmin/webmin/discussions/2530
2025-08-18 16:48:01 -07:00
Jamie Cameron
92b90a8170 Allow send_text_mail to take SMTP user and pass params
https://github.com/webmin/webmin/discussions/2530
2025-08-18 16:31:47 -07:00
Ilia Ross
783ad6f3a2 Fix ui textbox support extra class param 2025-08-14 02:21:10 +03:00
Ilia Ross
0fd02d4381 Add field sizing content class 2025-08-14 02:13:19 +03:00
Ilia Ross
4c2fde6847 Fix to test if database supports account locking correctly 2025-08-13 21:20:25 +03:00
Ilia Ross
9065de316a Fix not to fail on MySQL 5.5
99889c1f30 (commitcomment-163892642)
2025-08-13 11:11:09 +03:00
Ilia Ross
679a1c386e Add a way not to display bottom select all buttons 2025-08-10 17:44:12 +03:00
Ilia Ross
462483b667 Fix squashed tables bug 2025-08-09 16:41:45 +03:00
Jamie Cameron
58467ece0b Add dovecot IMAP location 2025-08-05 16:41:03 -07:00
Jamie Cameron
e864fa785f Merge branch 'master' of github.com:webmin/webmin 2025-08-05 13:28:40 -07:00
Jamie Cameron
5aba173111 Support MariaBD version 12
https://github.com/webmin/webmin/issues/2522
2025-08-05 13:28:03 -07:00
Ilia Ross
9305ddbdd5 Fix alerts positioning inside details 2025-08-04 21:28:50 +03:00
Ilia Ross
08d990ab13 Fix to support inlined details element (on the same line with text when opened) 2025-08-04 20:58:10 +03:00
Jamie Cameron
ecbeaf7bc7 Add support for IMAP via local command 2025-08-02 19:39:33 -07:00
Jamie Cameron
f8cb0db802 Show a different message for the reboot required monitor
https://github.com/webmin/webmin/issues/2518
2025-08-02 15:21:32 -07:00
Jamie Cameron
77b134fec1 This function is never called 2025-08-02 11:52:23 -07:00
Jamie Cameron
060a2f2853 Merge branch 'master' of github.com:webmin/webmin 2025-08-01 14:58:50 -07:00
Jamie Cameron
88c71b5dd4 Add UI field for slave server key
https://sourceforge.net/p/webadmin/bugs/5657/
2025-08-01 14:58:43 -07:00
Ilia Ross
f99f5fbae6 Revert previous commit
5ee080d24a (commitcomment-163253013)
2025-08-01 11:21:57 +03:00
Ilia Ross
2037af9d25 Add support for configuring WebSocket binding
5ee080d24a (commitcomment-163197549)
2025-07-31 15:21:33 +03:00
Jamie Cameron
d8988bd9f0 Merge branch 'master' of github.com:webmin/webmin 2025-07-30 16:59:39 -07:00
Jamie Cameron
5ee080d24a Only listen on localhost
https://github.com/webmin/authentic-theme/issues/1713
2025-07-30 16:59:32 -07:00
Ilia Ross
54bb5eac1e Fix output print 2025-07-26 23:29:50 +03:00
Ilia Ross
10790ccc7f Fix to make this page progressive 2025-07-26 23:29:19 +03:00
Ilia Ross
820453cc8c Add a way to run encrypt/decrypt as another user, defaulting to nobody
69681c01d4 (r162892288)
2025-07-26 15:01:18 +03:00
Ilia Ross
3d2ea49a47 Fix to use quotemeta instead
69681c01d4 (r162892280)
2025-07-26 14:21:45 +03:00
Ilia Ross
69681c01d4 Add reversible encryption helpers API 2025-07-25 14:24:43 +03:00
Ilia Ross
fe8545703d Add support for timeouts in temporary rules in FirewallD
https://forum.virtualmin.com/t/fantastic-new-addition-to-firewall-module/134328/10?u=ilia
2025-07-25 02:05:50 +03:00
Ilia Ross
f130112177 Fix to use correct default value 2025-07-25 01:43:46 +03:00
Ilia Ross
c32b04a7e6 Fix to make method configurable 2025-07-24 23:31:14 +03:00
Ilia Ross
afa9e9bd38 Fix to rethink what CPU fan is #2517
[no-build]
2025-07-24 22:50:18 +03:00
Ilia Ross
73d6333f19 Merge branch 'master' of github.com:webmin/webmin 2025-07-24 15:31:59 +03:00
Ilia Ross
549c786b84 Fix func name
https://github.com/webmin/webmin/issues/2519
2025-07-24 15:31:53 +03:00
Jamie Cameron
e15ab46a98 Improve wording when no reboot is needed
https://github.com/webmin/webmin/issues/2518
2025-07-23 23:57:12 -07:00
Ilia Ross
63abfbfe87 Fix not to add a new line to the content 2025-07-23 23:44:36 +03:00
Ilia Ross
da5b814d2b Fix query as the order matters
* Note: When "Show blob and text fields as" option is set to "Links to download" the download won't work if the sorting is active
2025-07-22 13:48:45 +03:00
Ilia Ross
187b7c72a8 Fix download link in MySQL rows
https://forum.virtualmin.com/t/mariadb-download-link-when-viewing-text-database-fields/134323/14
2025-07-22 13:05:39 +03:00
Ilia Ross
a08d104f82 Fix nested details to display nicely 2025-07-20 22:55:08 +03:00
Ilia Ross
71f441375b Add support for fit class in details 2025-07-20 17:30:55 +03:00
Ilia Ross
53fb520392 Fix to consider musthost directive too 2025-07-17 19:12:47 +03:00
Jamie Cameron
f5305eb065 URL for use in emails should use HTTP hostname if available
https://forum.virtualmin.com/t/webmin-virtualmin-password-recovery/132914/82
2025-07-17 01:46:46 -07:00
Ilia Ross
cd51f76062 Fix how help bubble appear in tables 2025-07-17 00:25:53 +03:00
Ilia Ross
147a10dd8a Fix tooltip align 2025-07-16 18:28:44 +03:00
Ilia Ross
f17f92c5c0 Fix table layout 2025-07-16 18:24:33 +03:00
Jamie Cameron
69b9756b4a Merge pull request #2512 from webmin/dev/init-systemd-improvements
Add improvements to systemd section of Init module
2025-07-14 18:23:11 +08:00
Ilia Ross
6935174133 Fix to consider it a bad request only if there is one 2025-07-13 17:43:47 +03:00
Jamie Cameron
51c86d41d4 Allow the primary file to also be home-relative 2025-07-11 00:47:19 -07:00
Jamie Cameron
d8166e9a8e Allow use of ~ in autoreply file 2025-07-10 04:40:22 -07:00
Jamie Cameron
0a0ad2f119 Only update session time when there is actually websockets traffic
https://github.com/webmin/webmin/pull/2510
2025-07-10 04:31:36 -07:00
Jamie Cameron
137af3637b Allow reply-tracking file to be relative to home dir 2025-07-09 16:13:56 -07:00
Jamie Cameron
d2863b7c4c Delete useless ssl_redirect option 2025-07-09 15:59:16 -07:00
Jamie Cameron
0f721a17ae Merge pull request #1718 from tgurr/sslrenegotiation
Disable SSL/TLS renegotiation
2025-07-07 17:20:37 +10:00
Jamie Cameron
72014ab2d7 Merge pull request #2514 from webmin/dev/option-enforce-ssl
Add the ability to re-enforce SSL connections and enable it by default
2025-07-07 08:53:24 +10:00
Ilia Ross
2d86d8c77a Fix to correctly open ports on contemporary systems 2025-07-06 21:08:18 +03:00
Ilia Ross
0bcbcd94b8 Fix to always send ports disregard of the firewall 2025-07-06 21:05:20 +03:00
Ilia Ross
f353ae31d8 Fix typos 2025-07-06 20:44:35 +03:00
Ilia Ross
24cd121642 Update outdated SSL explanations 2025-07-06 20:41:24 +03:00
Ilia Ross
11de78ce51 Add ability to configure SSL enforcement options in UI 2025-07-06 20:24:06 +03:00
Ilia Ross
6b75672534 Add ability to enforce SSL by default 2025-07-06 20:02:34 +03:00
Ilia Ross
c0f886b670 Fix not to show connection error if SSL is explicitly disabled
[no-build]
2025-07-06 15:43:00 +03:00
Ilia Ross
784b2b42e7 Fix wording 2025-07-06 14:03:19 +03:00
Timo Gurr
76bf648f94 Disable SSL/TLS renegotiation
Commit 2b77e8f020 allows to disable
TLS < 1.3, extend it to always disable SSL/TLS renegotiation even
for this older TLS protocols.

2b77e8f020
https://sourceforge.net/p/webadmin/bugs/4590/
2022-10-28 10:55:52 +02:00
335 changed files with 3394 additions and 1197 deletions

14
.editorconfig Normal file
View File

@@ -0,0 +1,14 @@
# EditorConfig for Perl project
# - Indentation: tabs
# - Tab width: 8
# - Indentation style: Ratliff
root = true
[*]
charset = utf-8
indent_style = tab
indent_size = 8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

View File

@@ -16,7 +16,6 @@ jobs:
project-name: webmin
is-release: ${{ github.event_name == 'release' }}
secrets:
DEV_GPG_PH: ${{ secrets.DEV_GPG_PH }}
DEV_IP_ADDR: ${{ secrets.DEV_IP_ADDR }}
DEV_IP_KNOWN_HOSTS: ${{ secrets.DEV_IP_KNOWN_HOSTS }}
DEV_UPLOAD_SSH_USER: ${{ secrets.DEV_UPLOAD_SSH_USER }}

View File

@@ -1,12 +1,94 @@
## Changelog
#### 2.403 (June 30, 2025)
* Add support for the Webmin webserver to work in both HTTP and HTTPS modes at the same time
* Add status monitor for PHP FPM #2499
* Add support for redirecting to the enforced domain when the `musthost_redirect` directive is set
* Add a UI API to mask sensitive text—like displayed passwords, unless hovered over container
* Fix MySQL/MariaDB to remove obsolete `set-variable` options that break modern config files #2497
#### 2.600 (November 9, 2025)
* Add an options to enable the slow query log in the MySQL/MariaDB module [#2560](https://github.com/webmin/webmin/issues/2560)
* Add ability to install multiple PHP extensions at once in the PHP Configuration module
* Add ability to show package URL in the Software Packages module [#1141](https://github.com/virtualmin/virtualmin-gpl/issues/1141)
* Add support to show Debian package install time in the Software Packages module
* Add support to show detailed Webmin server stats using new `webmin stats` CLI command [forum.virtualmin.com/t/135556](https://forum.virtualmin.com/t/is-this-memory-used-a-bit-high/135556/6?u=ilia)
* Add a major Authentic theme UI update with lots of visual and structural improvements for a smoother and more modern experience
[More details...](https://forum.virtualmin.com/t/authentic-theme-version-26-00-release-overview/135755?u=ilia)
* Fix EOL library fatal error for OS in development [#2121](https://github.com/webmin/webmin/issues/2121)
* Fix correctly saving jails with parameters containing quotes in the Fail2Ban module [#2572](https://github.com/webmin/webmin/issues/2572)
* Fix file is always renamed as the effective user in the Upload and Download module [#1054](https://github.com/webmin/webmin/issues/1054)
#### 2.520 (October 4, 2025)
* Fix to make sure the mail URL uses a well-known host name [security]
* Fix support for other Raspberry Pi sensors [#2545](https://github.com/webmin/webmin/issues/2545)
* Fix the printing of the bottom button row in the form column table
* Fix to recommend Perl `Sys::Syslog` module [#2557](https://github.com/webmin/webmin/issues/2557)
* Fix to avoid using short hostname in HTTPS redirects when an FQDN is available
* Fix to use _/proc_ sampler instead of `vmstat` for the same output with much lower overhead
* Fix to query specific fields in FreeBSD memory stats collection, cutting CPU use by 80%
* Fix to kill Webmin subprocesses during RC stop on FreeBSD and other systems
* Fix to correctly fetch command version in `PPTP VPN Client` module [#2567](https://github.com/webmin/webmin/issues/2567)
* Add a complete overhaul of `var_dump` subroutine, which is now fully portable
* Update the Authentic theme to the latest version with various fixes:
- Fix the text color when reading email in the Read User Mail module [webmin#2555](https://github.com/webmin/webmin/issues/2555)
- Fix to ensure the selected color palette is correctly stored when changed manually [webmin#2552](https://github.com/webmin/webmin/issues/2552)
- Fix a bug when the Webmin version label was missing when copying to clipboard system information from the dashboard
- Fix DNS query spike from network stats collection on FreeBSD [webmin#2556](https://github.com/webmin/webmin/issues/2556)
- Fix to display the appropriate icon for proxy mode on new Bunny DNS
- Fix spinner color in toast messages for dark palette
- Fix other bugs and add various small improvements
#### 2.510 (September 16, 2025)
* Fix to ensure DNSSEC re-signing period is less than 30 days in the BIND DNS module
* Fix to treat 201 as a valid response code in the internal download function
* Update the Authentic theme to the latest version with various improvements and fixes:
- Add optimizations to dashboard graphs with dynamic trimming to prevent page lagging
- Add improvements to how the system cache for the dashboard is updated
- Add support to correctly reload the page in proxy mode
- Add an option to choose if default page should always load when switching navigation
- Fix to ensure the color palette is preserved for the user [webmin#2537](https://github.com/webmin/webmin/issues/2537)
- Fix algorithm for calculating rows per page in data table pagination
- Fix the alert info box text color for dark mode
- Fix critical lags and appearance of Custom Commands module
#### 2.501 (September 10, 2025)
* Add support for Raspberry Pi sensors #2539 #2517
* Add Squid 7 support
* Update the Authentic theme to the latest version with the following fixes:
- Fix broken editor in "Bootup and Shutdown" module
#### 2.500 (September 4, 2025)
* Add support for the Webmin webserver to work in both HTTP and HTTPS modes at the same time
* Add distinct warning to the login page if the connection is not secure
* Add support for timeouts in temporary rules in "FirewallD" module
* Add support for the new Dovecot version 2.4
* Add support for MariaDB version 12 #2522
* Add support for IMAP through a local command for Usermin
* Add latest SSLeay support for redirects to SSL work
* Add improvements to "Bootup and Shutdown" module for _systemd_ systems
* Add field for secondary server key in "BIND DNS Server" module
* Add reversible encryption helpers API
* Add API to display relative dates
* Add API to mask sensitive text, like displayed passwords, unless hovered over
* Add status monitor for PHP FPM #2499
* Add support for DNF5 format in the "Software Packages" module
* Add support for redirecting to the enforced domain when the `musthost_redirect` directive is set
* Add option to customize the SMTP login for scheduled background monitoring in the "System and Server Status" module
* Change to show relative dates in "Webmin Users: Current Login Sessions" and "Webmin Actions Log: Search Results" pages
* Change "Last Logins" on the dashboard to show usernames, relative dates, and all users from the past 3 days
* Change to always enable HSTS by default
* Fix MySQL/MariaDB to remove obsolete `set-variable` options that break modern config files #2497
* Fix download link in table rows in "MySQL/MariaDB Database Server" module
* Fix module not to fail on old MySQL 5.5
* Update the Authentic theme to the latest version with various improvements and fixes:
- Add support to automatically set the color palette based on OS or browser preferences
- Add improvements to tooltips in dark palette
- Change the default shortcut key for toggling the light/dark palette
- Change the default shortcut key for toggling right slider
- Change wording to use "shortcut" instead of "hotkey"
- Change the default maximum column width
- Fix navigation menu load in proxy mode #2502
- Fix navigation menu to always stay in sync with the product switch
- Fix sporadic issue where the navigation menu disappeared and the content page was shifted
- Fix info alert text color and button color in the dark palette
- Fix styling of checkboxes and radios for backup and restore pages in Virtualmin
- Fix styling for extra backup destinations in Virtualmin
- Fix advanced schedule display in the cron chooser in Virtualmin
[More details...](https://github.com/webmin/authentic-theme/releases/tag/25.00)
#### 2.402 (June 16, 2025)
* Update the Authentic theme to the latest version with various fixes and improvements
@@ -131,7 +213,7 @@
* Update the Authentic theme to the latest version with various fixes and improvements
#### 2.201 (July 24, 2024)
* Fix real-time monitoring not updating graphs in the Dashboard [#2222](https://github.com/webmin/webmin/issues/2222)
* Fix real-time monitoring not updating graphs in the dashboard [#2222](https://github.com/webmin/webmin/issues/2222)
* Fix Terminal module to work correctly with _sudo_-capable users [#2223](https://github.com/webmin/webmin/issues/2223)
#### 2.200 (July 21, 2024)
@@ -244,7 +326,7 @@
* Add support for editing ACLs in File Manager
* Add support to configure SSL connection for MySQL/MariaDB module
* Add support for compressed backups in PostgreSQL module
* Add support for displaying inodes too in Disk Usage in the Dashboard
* Add support for displaying inodes too in Disk Usage in the dashboard
* Add better support for CloudLinux
* Fix to always default to RSA key type in Let's Encrypt requests
* Fix setup repository script for Oracle
@@ -252,7 +334,7 @@
* Fix support for SpamAssassin 4
* Fix to use system default hashing format for `htpasswd` file
* Fix FastRPC issues
* Update the Authentic theme to the latest version, with sped-up Dashboard performance
* Update the Authentic theme to the latest version, with sped-up dashboard performance
#### 2.013 (January 19, 2023)
* Fix Authentic theme issue with error handling

View File

@@ -44,7 +44,7 @@ Webmin 可以两种方法安装:
### 贡献者
* [Joe Cooper](https://github.com/swelljoe)
* [Ilia Rostovtsev](https://github.com/iliajie)
* [Ilia Rostovtsev](https://github.com/iliaross)
* [Kay Marquardt](https://github.com/gnadelwartz)
* [Nawawi Jamili](https://github.com/nawawi) + [其他无偿奉献的开发者](https://github.com/webmin/webmin/graphs/contributors)

View File

@@ -48,13 +48,13 @@ For detailed installation instructions check our guide on [webmin.com/download](
* [Jamie Cameron](https://www.webmin.com/about.html) [![](https://github.com/webmin-devel/webmin/blob/master/media/linkedin-15x15.png?raw=true)](https://www.linkedin.com/in/jamiecameron2)
### Developers
* [Ilia Rostovtsev](https://github.com/iliajie)
* [Ilia Rostovtsev](https://github.com/iliaross)
* [Joe Cooper](https://github.com/swelljoe)
### Contributors
* [Kay Marquardt](https://github.com/gnadelwartz)
* [Nawawi Jamili](https://github.com/nawawi)
* [unknown10777](https://github.com/unknown10777) + [90 more..](https://github.com/webmin/webmin/graphs/contributors)
* [unknown10777](https://github.com/unknown10777) + [90 more...](https://github.com/webmin/webmin/graphs/contributors)
## License

View File

@@ -1,23 +1,242 @@
## Reporting Security Issues
Please send all reports of security issues found in Webmin to security@webmin.com
via email, ideally PGP encrypted with the key from https://www.webmin.com/jcameron-key.asc .
> [!WARNING]
> **Found a bug?** If youve found a new security-related issue, email
> [security@webmin.com](mailto:security@webmin.com).
Potential security issues, in descending order of impact, include :
### Webmin 2.510 and below [October 9, 2025]
#### Host header injection vulnerability in the password reset feature [CVE-2025-61541]
* Remotely exploitable attacks that allow `root` access to Webmin without
any credentials.
- If the password reset feature is enabled, an attacker can use a specially
crafted host header to cause the password reset email to contain a link to a
malicious site.
* Privilege escalation vulnerabilities that allow non-`root` users of Webmin
to run commands or access files as `root`.
> Thanks to Nyein Chan Aung and Mg Demon for reporting this.
* XSS attacks that target users already logged into Webmin when they visit
another website.
### Webmin 2.202 and below [February 26, 2025]
#### SSL certificates from clients may be trusted unexpectedly
Things that are not actually security issues include :
- If Webmin is configured to trust remote IP addresses provided by a proxy *and*
you have users authenticating using client SSL certificates, a browser
connecting directly (not via the proxy) can provide a forged header to fake
the client certificate.
* XSS attacks that are blocked by Webmin's referrer checks, which are enabled
by default.
- Upgrade to Webmin 2.301 or later, and if there is any chance of direct
requests by clients disable this at **Webmin ⇾ Webmin Configuration ⇾ IP
Access Control** page using **Trust level for proxy headers** option.
* Attacks that require modifications to Webmin's code or configuration, which
can only be done by someone who already has `root` permissions.
> Thanks to Keigo YAMAZAKI from LAC Co., Ltd. for reporting this.
### Webmin 2.105 and below [April 15, 2024]
#### Privilege escalation by non-root users [CVE-2024-12828]
- A less-privileged Webmin user can execute commands as root via a vulnerability in the shell autocomplete feature.
- All Virtualmin admins and Webmin admins who have created additional accounts should upgrade to version 2.111 as soon as possible!
> Thanks to Trend Micros Zero Day Initiative for finding and reporting this issue.
### Webmin 1.995 and Usermin 1.850 and below [June 30, 2022]
#### XSS vulnerability in the HTTP Tunnel module
- If a less-privileged Webmin user is given permission to edit the configuration of the HTTP Tunnel module, he/she could use this to introduce a vulnerability that captures cookies belonging to other Webmin users that use the module.
> Thanks to [BLACK MENACE][2] and [PYBRO][3] for reporting this issue.
- An HTML email crafted by an attacker could capture browser cookies when opened.
> Thanks to [ly1g3][4] for reporting this bug.
### Webmin 1.991 and below [April 18, 2022]
#### Privilege escalation exploit [CVE-2022-30708]
- Less privileged Webmin users (excluding those created by Virtualmin and Cloudmin) can modify arbitrary files with root privileges, and so run commands as root. All systems with additional untrusted Webmin users should upgrade immediately.
> Thanks to [esp0xdeadbeef][5] and [V1s3r1on][6] for finding and reporting this issue!
### Webmin 1.984 and below [December 26, 2021]
#### File Manager privilege exploit [CVE-2022-0824 and CVE-2022-0829]
- Less privileged Webmin users who do not have any File Manager module restrictions configured can access files with root privileges, if using the default Authentic theme. All systems with additional untrusted Webmin users should upgrade immediately. Note that Virtualmin systems are not effected by this bug, due to the way domain owner Webmin users are configured.
> Thanks to Faisal Fs ([faisalfs10x][7]) from [NetbyteSEC][8] for finding and reporting this issue!
### Virtualmin Procmail wrapper version 1.0
#### Privilege escalation exploit
- Version 1.0 of the `procmail-wrapper` package installed with Virtualmin has a vulnerability that can be used by anyone with SSH access to gain `root` privileges. To prevent this, all Virtualmin users should upgrade to version 1.1 or later immediately.
### Webmin 1.973 and below [March 7, 2021]
#### XSS vulnerabilities if Webmin is installed using the `setup.pl` script [CVE-2021-31760, CVE-2021-31761 and CVE-2021-31762]
- If Webmin is installed using the non-recommended `setup.pl` script, checking for unknown referers is not enabled by default. This opens the system up to XSS and CSRF attacks using malicious links. Fortunately the standard `rpm`, `deb`, `pkg` and `tar` packages do not use this script and so are not vulnerable. If you did install using the `setup.pl` script, the vulnerability can be fixed by adding the line `referers_none=1` to `/etc/webmin/config` file.
> Thanks to Meshal ( Mesh3l\_911 ) [@Mesh3l\_911][9] and Mohammed ( Z0ldyck ) [@electronicbots][10] for finding and reporting this issue!
### Webmin 1.941 and below [January 16, 2020]
#### XSS vulnerability in the Command Shell module [CVE-2020-8820 and CVE-2020-8821]
- A user with privileges to create custom commands could exploit other users via unescaped HTML.
> Thanks to Mauro Caseres for reporting this and the following issue.
### Webmin 1.941 and below [January 16, 2020]
#### XSS vulnerability in the Read Mail module [CVE-2020-12670]
- Saving a malicious HTML attachment could trigger and XSS vulnerability.
### Webmin 1.882 to 1.921 [July 6, 2019]
#### Remote Command Execution [CVE-2019-15231]
- Webmin releases between these versions contain a vulnerability that allows remote command execution! Version 1.890 is vulnerable in a default install and should be upgraded immediately - other versions are only vulnerable if changing of expired passwords is enabled, which is not the case by default.
Either way, upgrading to version 1.930 is strongly recommended. Alternately, if running versions 1.900 to 1.920, edit `/etc/webmin/miniserv.conf`, remove the `passwd_mode=` line, then run `/etc/webmin/restart` command.
{{< details-start post-indent-details "More details.." >}}
Webmin version 1.890 was released with a backdoor that could allow anyone with knowledge of it to execute commands as root. Versions 1.900 to 1.920 also contained a backdoor using similar code, but it was not exploitable in a default Webmin install. Only if the admin had enabled the feature at **Webmin ⇾ Webmin Configuration ⇾ Authentication** to allow changing of expired passwords could it be used by an attacker.
Neither of these were accidental bugs - rather, the Webmin source code had been maliciously modified to add a non-obvious vulnerability. It appears that this happened as follows :
- At some time in April 2018, the Webmin development build server was exploited and a vulnerability added to the `password_change.cgi` script. Because the timestamp on the file was set back, it did not show up in any Git diffs. This was included in the Webmin 1.890 release.
- The vulnerable file was reverted to the checked-in version from GitHub, but sometime in July 2018 the file was modified again by the attacker. However, this time the exploit was added to code that is only executed if changing of expired passwords is enabled. This was included in the Webmin 1.900 release.
- On September 10th 2018, the vulnerable build server was decommissioned and replaced with a newly installed server running CentOS 7. However, the build directory containing the modified file was copied across from backups made on the original server.
- On August 17th 2019, we were informed that a 0-day exploit that made use of the vulnerability had been released. In response, the exploit code was removed and Webmin version 1.930 created and released to all users.
In order to prevent similar attacks in future, we're doing the following :
- Updating the build process to use only checked-in code from GitHub, rather than a local directory that is kept in sync.
- Rotated all passwords and keys accessible from the old build system.
- Auditing all GitHub commits over the past year to look for commits that may have introduced similar vulnerabilities.
{{< details-end >}}
### Webmin 1.900 [November 19, 2018]
#### Remote Command Execution (Metasploit)
- This is _not_ a workable exploit as it requires that the attacker already know the root password. Hence there is no fix for it in Webmin.
### Webmin 1.900 and below [November 19, 2018]
#### Malicious HTTP headers in downloaded URLs
- If the Upload and Download or File Manager module is used to fetch an un-trusted URL. If a Webmin user downloads a file from a malicious URL, HTTP headers returned can be used exploit an XSS vulnerability.
> Thanks to independent security researcher, John Page aka hyp3rlinx, who reported this vulnerability to Beyond Security's SecuriTeam Secure Disclosure program.
### Webmin 1.800 and below [May 26, 2016]
#### Authentic theme configuration page vulnerability
- Only an issue if your system has un-trusted users with Webmin access and is using the new Authentic theme. A non-root Webmin user could use the theme configuration page to execute commands as root.
#### Authentic theme remote access vulnerability
- Only if the Authentic theme is enabled globally. An attacker could execute commands remotely as root, as long as there was no firewall blocking access to Webmin's port 10000.
### Webmin 1.750 and below [May 12, 2015]
#### XSS (cross-site scripting) vulnerability in `xmlrpc.cgi` script [CVE-2015-1990]
- A malicious website could create links or JavaScript referencing the `xmlrpc.cgi` script, triggered when a user logged into Webmin visits the attacking site.
> Thanks to Peter Allor from IBM for finding and reporting this issue.
### Webmin 1.720 and below [November 24, 2014]
#### Read Mail module vulnerable to malicious links
- If un-trusted users have both SSH access and the ability to use Read User Mail module (as is the case for Virtualmin domain owners), a malicious link could be created to allow reading any file on the system, even those owned by _root_.
> Thanks to Patrick William from RACK911 labs for finding this bug.
### Webmin 1.700 and below [August 11, 2014]
#### Shellshock vulnerability
- If your _bash_ shell is vulnerable to _shellshock_, it can be exploited by attackers who have a Webmin login to run arbitrary commands as _root_. Updating to version 1.710 (or updating _bash_) will fix this issue.
### Webmin 1.590 and below [June 30, 2012]
#### XSS (cross-site scripting) security hole
- A malicious website could create links or JavaScript referencing the File Manager module that allowed execution of arbitrary commands via Webmin when the website is viewed by the victim. See [CERT vulnerability note VU#788478][12] for more details. Thanks to Jared Allar from the American Information Security Group for reporting this problem.
#### Referer checks don't include port
- If an attacker has control over `http://example.com/` then he/she could create a page with malicious JavaScript that could take over a Webmin session at `https://example.com:10000/` when `http://example.com/` is viewed by the victim.
> Thanks to Marcin Teodorczyk for finding this issue.
### Webmin 1.540 and below [April 20, 2011]
#### XSS (cross-site scripting) security hole
- This vulnerability can be triggered if an attacker changes his Unix username via a tool like `chfn`, and a page listing usernames is then viewed by the root user in Webmin.
> Thanks to Javier Bassi for reporting this bug.
### Virtualmin 3.70 and below [June 23, 2009]
#### Unsafe file writes in Virtualmin
- This bug allows a virtual server owner to read or write to arbitrary files on the system by creating malicious symbolic links and then having Virtualmin perform operations on those links. Upgrading to version 3.70 is strongly recommended if your system has un-trusted domain owners.
### Webmin 1.390 and below, Usermin 1.320 and below [February 8, 2008]
#### XSS (cross-site scripting) security hole
- This attack could open users who visit un-trusted websites while having Webmin open in the same browser up to having their session cookie captured, which could then allow an attacker to login to Webmin without a password. The quick fix is to go to the **Webmin Configuration** module, click on the **Trusted Referers** icon, set **Referrer checking enabled?** to **Yes**, and un-check the box **Trust links from unknown referrers**. Webmin 1.400 and Usermin 1.330 will make these settings the defaults.
### Webmin 1.380 and below [November 3, 2007]
#### Windows-only command execution bug
- Any user logged into Webmin can execute any command using special URL parameters. This could be used by less-privileged Webmin users to raise their level of access.
> Thanks for Keigo Yamazaki of Little eArth Corporation for finding this bug.
### Webmin 1.374 and below, Usermin 1.277 and below
#### XSS bug in `pam_login.cgi` script
- A malicious link to Webmin `pam_login.cgi` script can be used to execute JavaScript within the Webmin server context, and perhaps steal session cookies.
### Webmin 1.330 and below, Usermin 1.260 and below
#### XSS bug in `chooser.cgi` script
- When using Webmin or Usermin to browse files on a system that were created by an attacker, a specially crafted filename could be used to inject arbitrary JavaScript into the browser.
### Webmin 1.296 and below, Usermin 1.226 and below
#### Remote source code access
- An attacker can view the source code of Webmin CGI and Perl programs using a specially crafted URL. Because the source code for Webmin is freely available, this issue should only be of concern to sites that have custom modules for which they want the source to remain hidden.
#### XSS bug
- The XSS bug makes use of a similar technique to craft a URL that can allow arbitrary JavaScript to be executed in the user's browser if a malicious link is clicked on.
> Thanks for Keigo Yamazaki of Little eArth Corporation for finding this bug.
### Webmin 1.290 and below, Usermin 1.220 and below
#### Arbitrary remote file access
- An attacker without a login to Webmin can read the contents of any file on the server using a specially crafted URL. All users should upgrade to version 1.290 as soon as possible, or setup IP access control in Webmin.
> Thanks to Kenny Chen for bringing this to my attention.
### Webmin 1.280 and below
#### Windows arbitrary file access
- If running Webmin on Windows, an attacker can remotely view the contents of any file on your system using a specially crafted URL. This does not affect other operating systems, but if you use Webmin on Windows you should upgrade to version 1.280 or later.
> Thanks to Keigo Yamazaki of Little eArth Corporation for discovering this bug.
### Webmin 1.250 and below, Usermin 1.180 and below
#### Perl syslog input attack
- When logging of failing login attempts via `syslog` is enabled, an attacker can crash and possibly take over the Webmin webserver, due to un-checked input being passed to Perl's `syslog` function. Upgrading to the latest release of Webmin is recommended.
> Thanks to Jack at Dyad Security for reporting this problem to me.
### Webmin 1.220 and below, Usermin 1.150 and below
#### Full PAM conversations' mode remote attack
- Affects systems when the option **Support full PAM conversations?** is enabled on the **Webmin ⇾ Webmin Configuration ⇾ Authentication** page. When this option is enabled in Webmin or Usermin, an attacker can gain remote access to Webmin without needing to supply a valid login or password. Fortunately this option is not enabled by default and is rarely used unless you have a PAM setup that requires more than just a username and password, but upgrading is advised anyway. <br />
> Thanks to Keigo Yamazaki of Little eArth Corporation and [JPCERT/CC][13] for discovering and notifying me of this bug.
### Webmin 1.175 and below, Usermin 1.104 and below
#### Brute force password guessing attack
- Prior Webmin and Usermin versions do not have password timeouts turned on by default, so an attacker can try every possible password for the _root_ or admin user until he/she finds the correct one.
The solution is to enable password timeouts, so that repeated attempts to login as the same user will become progressively slower. This can be done by following these steps :
* Go to the **Webmin Configuration** module.
* Click on the **Authentication** icon.
* Select the **Enable password timeouts** button.
* Click the **Save** button at the bottom of the page.
This problem is also present in Usermin, and can be prevented by following the same steps in the **Usermin Configuration** module.
### Webmin 1.150 and below, Usermin 1.080 and below
#### XSS vulnerability
- When viewing HTML email, several potentially dangerous types of URLs can be passed through. This can be used to perform malicious actions like executing commands as the logged-in Usermin user.
#### Module configurations are visible
- Even if a Webmin user does not have access to a module, he/she can still view it's Module Config page by entering a URL that calls `config.cgi` with the module name as a parameter.
#### Account lockout attack
- By sending a specially constructed password, an attacker can lock out other users if password timeouts are enabled.
[2]: https://github.com/bl4ckmenace
[3]: https://github.com/Pybro09
[4]: https://github.com/ly1g3
[5]: https://github.com/esp0xdeadbeef
[6]: https://github.com/V1s3r1on
[7]: https://github.com/faisalfs10x/
[8]: https://www.netbytesec.com/
[9]: https://twitter.com/Mesh3l_911
[10]: https://twitter.com/electronicbots
[12]: http://www.kb.cert.org/vuls/id/788478
[13]: http://www.jpcert.or.jp/

File diff suppressed because one or more lines are too long

View File

@@ -82,7 +82,7 @@ print &ui_table_row($text{'unix_restrict2'},
print &ui_table_row("",
&ui_checkbox("shells_deny", 1, $text{'unix_shells'},
$miniserv{'shells_deny'} ? 1 : 0)." ".
&ui_filebox("shells", $miniserv{'shells_deny'} || "/etc/shells", 40));
&ui_filebox("shells", $miniserv{'shells_deny'} || "/etc/shells", 25));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);

View File

@@ -238,6 +238,18 @@ my @themes = grep { !$_->{'overlay'} } @all;
my @overlays = grep { $_->{'overlay'} } @all;
if ($access{'theme'}) {
my $tconf_link;
my %tinfo = &webmin::get_theme_info($user{'theme'});
if ($user{'theme'} && $user{'theme'} eq $tinfo{'dir'} &&
$user{'name'} eq $remote_user &&
$tinfo{'config_link'}) {
$tconf_link = &ui_tag('span', &ui_link(
"@{[&get_webprefix()]}/$tinfo{'config_link'}",
&ui_tag('span', '⚙',
{ class => 'theme-config-char',
title => $text{'themes_configure'} }),
'text-link'), { style => 'position: relative;' });
}
# Current theme
my @topts = ( );
push(@topts, !$user{'theme'} ? [ '', $text{'edit_themedef'} ] : ());
@@ -247,7 +259,8 @@ if ($access{'theme'}) {
print &ui_table_row($text{'edit_theme'},
&ui_radio("theme_def", defined($user{'theme'}) ? 0 : 1,
[ [ 1, $text{'edit_themeglobal'} ],
[ 0, &ui_select("theme", $user{'theme'}, \@topts) ] ]));
[ 0, &ui_select("theme", $user{'theme'}, \@topts).
$tconf_link ] ]));
}
if ($access{'theme'} && @overlays) {

View File

@@ -7,7 +7,7 @@ use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
require './acl-lib.pl';
our (%in, %text, %config, %access, $base_remote_user);
our (%in, %text, %config, %gconfig, %access, $base_remote_user);
&ReadParse();
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
@@ -206,7 +206,7 @@ if (uc($ENV{'HTTPS'}) eq "ON" && $miniserv{'ca'}) {
push(@icons, "images/twofactor.gif");
push(@links, "twofactor_form.cgi");
push(@titles, $text{'index_twofactor'});
if ($access{'rbacenable'}) {
if ($access{'rbacenable'} && $gconfig{'os_type'} eq 'solaris') {
push(@icons, "images/rbac.gif");
push(@links, "edit_rbac.cgi");
push(@titles, $text{'index_rbac'});

View File

@@ -355,18 +355,19 @@ unix_utable=Allowed Unix users
sessions_title=Current Login Sessions
sessions_id=Session ID
sessions_user=Webmin user
sessions_login_ago=Last active ago
sessions_login=Last active at
sessions_host=IP address
sessions_lview=View logs..
sessions_actions=Actions..
sessions_all=All sessions..
sessions_logouts=Also show logged-out sessions..
sessions_lview=View logs
sessions_actions=Actions
sessions_all=All sessions
sessions_logouts=Also show logged-out sessions
sessions_state=State
sessions_action=Actions
sessions_this=This login
sessions_in=Logged in
sessions_out=Logged out
sessions_kill=Disconnect..
sessions_kill=Disconnect
logins_title=Recent Webmin logins

View File

@@ -28,7 +28,7 @@ print &ui_columns_start([ $text{'sessions_id'},
$text{'sessions_state'},
$text{'sessions_user'},
$text{'sessions_host'},
$text{'sessions_login'},
$text{'sessions_login_ago'},
$text{'sessions_actions'},
], 100);
foreach my $k (sort { my @a = split(/\s+/, $sessiondb{$a});
@@ -68,7 +68,8 @@ foreach my $k (sort { my @a = split(/\s+/, $sessiondb{$a});
push(@cols, $user);
}
push(@cols, $lip);
push(@cols, &make_date($ltime));
push(@cols, &make_date_relative($ltime).
"&nbsp;".&ui_help(&make_date($ltime)));
my @links;
if ($haslog) {
push(@links, ui_link("../webminlog/search.cgi?uall=1&mall=1&tall=1&wall=1&fall=1&sid=$k", $text{'sessions_lview'}));

View File

@@ -20,7 +20,12 @@ foreach my $k (keys %sessiondb) {
next if ($k =~ /^1111111/);
next if (!$sessiondb{$k});
my ($user, $ltime, $lip) = split(/\s+/, $sessiondb{$k});
next if ($user ne $remote_user && $user ne "!".$remote_user);
next if (&webmin_user_is_admin()
? ($user eq "!" ||
($user ne $remote_user &&
# Show all logins for past 3 days for admin
$ltime && $ltime < time() - 3*24*60*60))
: ($user ne $remote_user && $user ne "!".$remote_user));
push(@logins, [ $user, $ltime, $lip, $k ]);
}
if (@logins) {
@@ -29,7 +34,8 @@ if (@logins) {
@logins = @logins[0..4];
}
my $html = &ui_columns_start([ $text{'sessions_host'},
$text{'sessions_login'},
$text{'sessions_user'},
$text{'sessions_login_ago'},
$text{'sessions_state'},
$text{'sessions_action'} ]);
my $open = 0;
@@ -62,9 +68,13 @@ if (@logins) {
&ui_link("@{[&get_webprefix()]}/acl/delete_session.cgi?id=$l->[3]&redirect_ref=1",
$text{'sessions_kill'}))
}
my $user = $l->[0];
$user =~ s/^\!//;
$html .= &ui_columns_row([
$l->[2],
&make_date($l->[1]),
$user,
&make_date_relative($l->[1]).
"&nbsp;".&ui_help(&make_date($l->[1])),
$state,
&ui_links_row(\@links) ]);
}

View File

@@ -1235,6 +1235,9 @@ sub restart_button
local $args = "redir=".&urlize(&this_url());
local @rv;
if (&is_apache_running()) {
if ($access{'stop'}) {
push(@rv, &ui_link("stop.cgi?$args", $text{'apache_stop'}) );
}
if ($access{'apply'}) {
my $n = &needs_config_restart();
if ($n) {
@@ -1245,9 +1248,6 @@ if (&is_apache_running()) {
push(@rv, &ui_link("restart.cgi?$args", $text{'apache_apply'}) );
}
}
if ($access{'stop'}) {
push(@rv, &ui_link("stop.cgi?$args", $text{'apache_stop'}) );
}
}
elsif ($access{'stop'}) {
push(@rv, &ui_link("start.cgi?$args", $text{'apache_start'}) );

View File

@@ -158,7 +158,7 @@ $rv .= "<table id='show_backup_destination' cellpadding=1 cellspacing=0>";
# Local file field
$rv .= "<tr><td>".&ui_oneradio("$_[0]_mode", 0, undef, $mode == 0)."</td>\n";
$rv .= "<td>$text{'backup_mode0'}&nbsp;</td><td colspan='3'>".
$rv .= "<td>".&ui_tag('strong', $text{'backup_mode0'})."&nbsp;</td><td colspan='3'>".
&ui_textbox("$_[0]_file", $mode == 0 ? $path : "", 60, undef, undef,
($_[2] != 1 && $config{'date_subs'}) ?
'placeholder="/backups/configs-%y-%m-%d-%H-%M-%S.tar.gz"' : undef).
@@ -166,7 +166,7 @@ $rv .= "<td>$text{'backup_mode0'}&nbsp;</td><td colspan='3'>".
# FTP file fields
$rv .= "<tr><td>".&ui_oneradio("$_[0]_mode", 1, undef, $mode == 1)."</td>\n";
$rv .= "<td>$text{'backup_mode1'}&nbsp;</td><td>".
$rv .= "<td>".&ui_tag('strong', $text{'backup_mode1'})."&nbsp;</td><td>".
&ui_textbox("$_[0]_server", $mode == 1 ? $server : undef, 20).
"</td>\n";
$rv .= "<td>&nbsp;$text{'backup_path'}&nbsp;</td><td> ".
@@ -186,7 +186,7 @@ $rv .= "<td colspan='4'>$text{'backup_port'} ".
# SCP file fields
$rv .= "<tr><td>".&ui_oneradio("$_[0]_mode", 2, undef, $mode == 2)."</td>\n";
$rv .= "<td>$text{'backup_mode2'}&nbsp;</td><td>".
$rv .= "<td>".&ui_tag('strong', $text{'backup_mode2'})."&nbsp;</td><td>".
&ui_textbox("$_[0]_sserver", $mode == 2 ? $server : undef, 20).
"</td>\n";
$rv .= "<td>&nbsp;$text{'backup_path'}&nbsp;</td><td> ".
@@ -208,7 +208,7 @@ if ($_[2] == 1) {
# Uploaded file field
$rv .= "<tr><td>".&ui_oneradio("$_[0]_mode", 3, undef, $mode == 3).
"</td>\n";
$rv .= "<td colspan=4>$text{'backup_mode3'} ".
$rv .= "<td colspan=4>".&ui_tag('strong', $text{'backup_mode3'})." ".
&ui_upload("$_[0]_upload", 40).
"</td> </tr>\n";
}
@@ -216,7 +216,8 @@ elsif ($_[2] == 2) {
# Output to browser option
$rv .= "<tr><td>".&ui_oneradio("$_[0]_mode", 4, undef, $mode == 4).
"</td>\n";
$rv .= "<td colspan=4>$text{'backup_mode4'}</td> </tr>\n";
$rv .= "<td colspan=4>".&ui_tag('strong', $text{'backup_mode4'}).
"</td> </tr>\n";
}
$rv .= "</table>\n";

View File

@@ -5,7 +5,7 @@ use strict;
use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
our (%text, %config, $no_acl_check);
our (%text, %config, $no_acl_check, %gconfig);
$no_acl_check++;
require './backup-config-lib.pl';
&foreign_require("mailboxes", "mailboxes-lib.pl");
@@ -76,11 +76,10 @@ if (($err || $backup->{'emode'} == 0) && $backup->{'email'}) {
$postmsg;
$subject = &text('email_sok', $host);
}
&mailboxes::send_text_mail($config{'from_addr'} ||
&mailboxes::get_from_address(),
$backup->{'email'},
undef,
$subject,
$msg);
&mailboxes::send_text_mail(
$config{'from_addr'} || &mailboxes::get_from_address(),
$backup->{'email'} eq '*' ? $gconfig{'webmin_email_to'}
: $backup->{'email'},
undef, $subject, $msg);
}

View File

@@ -10,11 +10,14 @@ our (%in, %text, %gconfig);
&ReadParse();
my $backup;
my $wet = $gconfig{'webmin_email_to'};
if ($in{'new'}) {
&ui_print_header(undef, $text{'edit_title1'}, "");
$backup = { 'emode' => 0,
'email' => $gconfig{'webmin_email_to'},
'email' => $wet ? '*' : undef,
'sched' => 1,
'configfile' => 1,
'nofiles' => 0,
'mins' => 0,
'hours' => 0,
'days' => '*',
@@ -72,7 +75,10 @@ print &ui_hidden_table_start($text{'edit_header3'}, "width=100%", 2,
# Show email address
print &ui_table_row($text{'edit_email'},
&ui_textbox("email", $backup->{'email'}, 40));
$wet ? &ui_opt_textbox("email",
$backup->{'email'} eq '*' ? undef : $backup->{'email'},
40, &text('edit_email_def', "<tt>$wet</tt>"))
: &ui_textbox("email", $backup->{'email'}, 40));
# Show email mode
print &ui_table_row($text{'edit_emode'},

View File

@@ -30,7 +30,7 @@ my $using_strftime = 0;
if (@backups) {
# Show all scheduled backups
print &ui_link("edit.cgi?new=1", $text{'index_add'});
print "<br>\n";
print "<br>\n";
print &ui_columns_start([ $text{'index_dest'},
$text{'index_mods'},
$text{'index_sched'} ], 100);

View File

@@ -27,6 +27,7 @@ edit_header=Scheduled backup options
edit_header2=Pre and post backup commands
edit_header3=Backup schedule
edit_email=Email result to address
edit_email_def=Webmin default ($1)
edit_emode=When to send email
edit_emode0=Always
edit_emode1=Only when an error occurs

View File

@@ -36,7 +36,7 @@ else {
$backup->{'dest'} = &parse_backup_destination("dest", \%in);
&cron::parse_times_input($backup, \%in);
$backup->{'emode'} = $in{'emode'};
$backup->{'email'} = $in{'email'};
$backup->{'email'} = $in{'email_def'} ? '*' : $in{'email'};
$backup->{'pre'} = $in{'pre'};
$backup->{'post'} = $in{'post'};
$backup->{'sched'} = $in{'sched'};

View File

@@ -116,4 +116,4 @@ Name of the user to disable two-factor authentication for.
Copyright 2018 Jamie Cameron <jcameron@webmin.com>
Joe Cooper <joe@virtualmin.com>
Ilia Rostovtsev <ilia@virtualmin.com>
Ilia Ross <ilia@virtualmin.com>

View File

@@ -260,5 +260,5 @@ Set new user password. Using this option may be unsecure.
Copyright 2018 Jamie Cameron <jcameron@webmin.com>
Joe Cooper <joe@virtualmin.com>
Ilia Rostovtsev <ilia@virtualmin.com>
Ilia Ross <ilia@virtualmin.com>

View File

@@ -22,7 +22,7 @@ sub main
# If username passed as regular param
my $cmd = scalar(@ARGV) == 1 && $ARGV[0];
$cmd = $opt{'command'} if ($opt{'command'});
if ($cmd !~ /^(status|start|stop|restart|reload|force-restart|kill)$/) {
if ($cmd !~ /^(stats|status|start|stop|restart|reload|force-restart|kill)$/) {
$cmd = undef;
}
@@ -92,6 +92,395 @@ sub run
}
exit $rs;
}
if ($o->{'cmd'} =~ /^(stats)$/) {
my $rs = 0;
if (-x $systemctlcmd) {
my $format_bytes = sub {
my $bytes = shift;
return "0" unless defined $bytes && $bytes =~ /^\d+$/;
my $mb = $bytes / 1048576;
my $gb = $mb / 1024;
if ($gb >= 1) {
return sprintf("%.2f GB", $gb);
} elsif ($mb >= 1) {
return sprintf("%.2f MB", $mb);
} else {
return sprintf("%.2f KB", $bytes / 1024);
}
};
# Check if service is running first
my $is_active_cmd = qq{systemctl is-active "$service" 2>/dev/null};
my $is_active = `$is_active_cmd`;
$rs = $? >> 8;
chomp($is_active);
if ($rs != 0 || $is_active ne 'active') {
print "Service '$service' is not running (status: $is_active)\n";
return 2;
}
# Get main pid
my $main_pid_cmd = qq{systemctl show -p MainPID --value "$service"};
my $main_pid = `$main_pid_cmd`;
$rs = $? >> 8;
return $rs if $rs != 0;
chomp($main_pid);
if (!$main_pid || $main_pid eq '0') {
print "Service '$service' has no main PID\n";
return;
}
# Get process list
my $cmd = qq{
CG=\$(systemctl show -p ControlGroup --value "$service");
P=\$({ cat /sys/fs/cgroup"\$CG"/cgroup.procs; systemctl show -p MainPID --value "$service"; } | sort -u);
COLUMNS=10000 ps --cols 10000 -ww --no-headers -o pid=,ppid=,rss=,pmem=,pcpu=,args= --sort=-rss -p \$P |
awk 'function h(k){m=k/1024;g=m/1024;return g>=1?sprintf("%.2fG",g):sprintf("%.1fM",m)} BEGIN{printf "%6s %6s %9s %6s %6s %-s\\n","PID","PPID","RSS_KiB","%MEM","%CPU","CMD (RSS_human)"} {cmd=substr(\$0,index(\$0,\$6)); printf "%6s %6s %9s %6s %6s %s (%s)\\n",\$1,\$2,\$3,\$4,\$5,cmd,h(\$3)}'
};
my $out = `$cmd`;
$rs = $? >> 8;
return $rs if $rs != 0;
# Extract pids from the output
my @all_pids;
foreach my $line (split(/\n/, $out)) {
if ($line =~ /^\s*(\d+)\s+/) {
push @all_pids, $1;
}
}
if (!@all_pids) {
print "No processes found for service '$service'\n";
return 3;
}
# Reorder with main pid first, then rest sorted by size
my @pids;
if ($main_pid && $main_pid ne '' && grep { $_ eq $main_pid } @all_pids) {
push @pids, $main_pid;
push @pids, grep { $_ ne $main_pid } @all_pids;
} else {
@pids = @all_pids;
}
# Print the table with main pid marked
foreach my $line (split(/\n/, $out)) {
if ($line =~ /^\s*$main_pid\s+/ && $main_pid) {
chomp($line);
print "$line [MAIN]\n";
} else {
print "$line\n";
}
}
# Check if lsof is available
my $has_lsof = has_command('lsof');
# Get detailed info for each pid
foreach my $pid (@pids) {
my $is_main = ($pid eq $main_pid) ? " [MAIN PROCESS]" : "";
# Check if process still exists
unless (-d "/proc/$pid") {
print "\n\nProcess $pid no longer exists, skipping...\n";
next;
}
print "\n";
print "╔" . "═"x78 . "╗\n";
print "║" . sprintf("%-78s", " DETAILED ANALYSIS FOR PID $pid$is_main") . "║\n";
print "╚" . "═"x78 . "╝\n";
# Working directory and binary
print "\n┌─ WORKING DIRECTORY & BINARY " . "─"x49 . "\n";
my $cwd = `readlink /proc/$pid/cwd 2>/dev/null`;
chomp($cwd);
print "CWD: $cwd\n" if $cwd;
my $exe = `readlink /proc/$pid/exe 2>/dev/null`;
chomp($exe);
print "EXE: $exe\n" if $exe;
my $root = `readlink /proc/$pid/root 2>/dev/null`;
chomp($root);
print "ROOT: $root\n" if $root && $root ne '/';
# Environment variables
print "\n┌─ ENVIRONMENT VARIABLES " . "─"x54 . "\n";
my $env = `cat /proc/$pid/environ 2>/dev/null | tr '\\0' '\\n' | grep -E '^(PATH|HOME|USER|LANG|TZ|LD_|PYTHON|JAVA|NODE|PORT|HOST|DB_|API_)' | sort`;
if ($env) {
print $env;
} else {
print "Unable to read environment\n";
}
# Basic process info
print "\n┌─ PROCESS INFO " . "─"x63 . "\n";
my $ps_info = `ps -p $pid -o user=,pid=,ppid=,pri=,ni=,vsz=,rss=,stat=,start=,time=,cmd= 2>/dev/null`;
if ($ps_info) {
print "USER PID PPID PRI NI VSZ RSS STAT START TIME CMD\n";
print $ps_info;
} else {
print "Process no longer exists\n";
next;
}
# Process tree
print "\n┌─ PROCESS TREE " . "─"x63 . "\n";
my $pstree = `pstree -p -a $pid 2>/dev/null`;
if ($pstree) {
print $pstree;
} else {
print "pstree not available\n";
}
# Memory and status
print "\n┌─ MEMORY & STATUS " . "─"x60 . "\n";
my $status = `grep -E 'VmPeak|VmSize|VmRSS|VmSwap|RssAnon|RssFile|Threads|voluntary_ctxt|nonvoluntary_ctxt' /proc/$pid/status 2>/dev/null`;
print $status || "N/A\n";
# Open file descriptors
print "\n┌─ FILE DESCRIPTORS " . "─"x59 . "\n";
my $fd_count = `ls -1 /proc/$pid/fd 2>/dev/null | wc -l`;
chomp($fd_count);
print "Total Open FDs: $fd_count\n";
if ($has_lsof) {
print "\nFile Descriptor Types:\n";
my $fd_types = `lsof +c 0 -p $pid 2>/dev/null | awk 'NR>1 {print \$5}' | sort | uniq -c | sort -rn`;
print $fd_types || "Unable to get FD types\n";
print "\nDetailed File Descriptors:\n";
my $all_fds = `lsof +c 0 -p $pid 2>/dev/null`;
$all_fds =~ s/^/ /mg;
print $all_fds || "No files open\n";
} else {
print "\n(Install lsof for detailed file descriptor analysis)\n";
print "\nOpen FD Sample:\n";
my $fd_sample = `ls -la /proc/$pid/fd 2>/dev/null | head -15`;
print $fd_sample;
}
# Network Connections
print "\n┌─ NETWORK CONNECTIONS " . "─"x56 . "\n";
# tcp connections with details
my $tcp_detailed = `ss -tnp -o 2>/dev/null | grep 'pid=$pid'`;
my $tcp_count = `echo "$tcp_detailed" | grep -c 'pid=$pid'` || 0;
chomp($tcp_count);
print "Active TCP Connections: $tcp_count\n";
if ($tcp_count > 0) {
print "\nTCP Connections (with timers and queues):\n";
print $tcp_detailed;
print "\nConnection State Summary:\n";
my $state_summary = `ss -tnp 2>/dev/null | grep 'pid=$pid' | awk '{print \$1}' | sort | uniq -c | sort -rn`;
print $state_summary;
print "\nLocal Ports in Use:\n";
my $local_ports = `ss -tnp 2>/dev/null | grep 'pid=$pid' | awk '{split(\$4,a,":"); print a[length(a)]}' | sort -n | uniq -c`;
print $local_ports || "None\n";
print "\nRemote Endpoints:\n";
my $remote_ips = `ss -tnp 2>/dev/null | grep 'pid=$pid' | awk '{print \$5}' | cut -d: -f1 | sort | uniq -c | sort -rn`;
print $remote_ips || "None\n";
}
# tcp listening
my $tcp_listen = `ss -tlnp 2>/dev/null | grep 'pid=$pid'`;
if ($tcp_listen) {
print "\nTCP Listening Sockets:\n";
print $tcp_listen;
}
# udp connections
my $udp_count = `ss -unp 2>/dev/null | grep -c 'pid=$pid'`;
chomp($udp_count);
if ($udp_count > 0) {
print "\nUDP Connections: $udp_count\n";
my $udp_conns = `ss -unp 2>/dev/null | grep 'pid=$pid'`;
print $udp_conns;
}
# udp listening
my $udp_listen = `ss -ulnp 2>/dev/null | grep 'pid=$pid'`;
if ($udp_listen) {
print "\nUDP Listening Sockets:\n";
print $udp_listen;
}
# unix sockets
my $unix_sockets = `ss -xp 2>/dev/null | grep 'pid=$pid' | wc -l`;
chomp($unix_sockets);
if ($unix_sockets > 0) {
print "\nUnix Domain Sockets: $unix_sockets\n";
}
# I/O Statistics
print "\n┌─ I/O STATISTICS " . "─"x61 . "\n";
my $io = `cat /proc/$pid/io 2>/dev/null`;
if ($io) {
print $io;
# Parse and show human-readable
my ($read_bytes, $write_bytes);
if ($io =~ /read_bytes:\s*(\d+)/) {
$read_bytes = $1;
}
if ($io =~ /write_bytes:\s*(\d+)/) {
$write_bytes = $1;
}
if (defined $read_bytes && defined $write_bytes) {
print "\nRead: " . $format_bytes->($read_bytes) .
", Write: " . $format_bytes->($write_bytes) . "\n";
}
} else {
print "N/A\n";
}
# Resource Limits
print "\n┌─ RESOURCE LIMITS " . "─"x60 . "\n";
my $limits = `grep -E 'Max open files|Max processes|Max locked memory|Max address space|Max cpu time' /proc/$pid/limits 2>/dev/null`;
print $limits || "N/A\n";
# Cgroup limits
my $cg_path = `cat /proc/$pid/cgroup 2>/dev/null | grep '^0::' | cut -d: -f3`;
chomp($cg_path);
my $cgroup_output = "";
if ($cg_path) {
my $mem_limit = `cat /sys/fs/cgroup$cg_path/memory.max 2>/dev/null`;
my $mem_current = `cat /sys/fs/cgroup$cg_path/memory.current 2>/dev/null`;
my $cpu_max = `cat /sys/fs/cgroup$cg_path/cpu.max 2>/dev/null`;
chomp($mem_limit, $mem_current, $cpu_max);
if ($mem_limit && $mem_limit ne 'max') {
$cgroup_output .= "Memory Limit: " . $format_bytes->(int($mem_limit)) . "\n";
$cgroup_output .= "Memory Current: " . $format_bytes->(int($mem_current)) . "\n" if $mem_current;
if ($mem_current) {
my $pct = sprintf("%.1f", ($mem_current / $mem_limit) * 100);
$cgroup_output .= "Memory Usage: $pct%\n";
}
}
if ($cpu_max && $cpu_max ne 'max') {
$cgroup_output .= "CPU Quota: $cpu_max\n";
}
}
if ($cgroup_output) {
print "\n┌─ CGROUP LIMITS " . "─"x62 . "\n";
print $cgroup_output;
}
# CPU & Scheduling
print "\n┌─ CPU & SCHEDULING " . "─"x59 . "\n";
my $sched = `grep -E 'se.sum_exec_runtime|nr_switches|nr_voluntary_switches|nr_involuntary_switches' /proc/$pid/sched 2>/dev/null | head -4`;
if ($sched) {
print $sched;
}
my $cpuset = `cat /proc/$pid/cpuset 2>/dev/null`;
chomp($cpuset);
print "CPUset: $cpuset\n" if $cpuset;
# Signal handlers
print "\n┌─ SIGNAL HANDLERS " . "─"x60 . "\n";
my $signals = `cat /proc/$pid/status 2>/dev/null | grep -E '^Sig(Cgt|Ign|Blk):'`;
if ($signals) {
print $signals;
# Decode signal masks
my %signal_names = (
1 => 'SIGHUP', 2 => 'SIGINT', 3 => 'SIGQUIT',
4 => 'SIGILL', 5 => 'SIGTRAP', 6 => 'SIGABRT',
7 => 'SIGBUS', 8 => 'SIGFPE', 9 => 'SIGKILL',
10 => 'SIGUSR1', 11 => 'SIGSEGV', 12 => 'SIGUSR2',
13 => 'SIGPIPE', 14 => 'SIGALRM', 15 => 'SIGTERM',
16 => 'SIGSTKFLT', 17 => 'SIGCHLD', 18 => 'SIGCONT',
19 => 'SIGSTOP', 20 => 'SIGTSTP', 21 => 'SIGTTIN',
22 => 'SIGTTOU', 23 => 'SIGURG', 24 => 'SIGXCPU',
25 => 'SIGXFSZ', 26 => 'SIGVTALRM', 27 => 'SIGPROF',
28 => 'SIGWINCH', 29 => 'SIGIO', 30 => 'SIGPWR',
31 => 'SIGSYS'
);
my $decode_sigmask = sub {
my ($hex_mask, $names_ref) = @_;
return "none" if $hex_mask eq '0000000000000000';
# Convert hex to decimal
my $mask = hex($hex_mask);
my @signals;
# Check each bit
for (my $i = 1; $i <= 31; $i++) {
if ($mask & (1 << ($i - 1))) {
push @signals, "$names_ref->{$i}($i)";
}
}
return @signals ? join(", ", @signals) : "none";
};
print "\nDecoded:\n";
if ($signals =~ /SigBlk:\s*([0-9a-f]+)/i) {
print " Blocked: " .
$decode_sigmask->($1, \%signal_names) . "\n";
}
if ($signals =~ /SigIgn:\s*([0-9a-f]+)/i) {
print " Ignored: " .
$decode_sigmask->($1, \%signal_names) . "\n";
}
if ($signals =~ /SigCgt:\s*([0-9a-f]+)/i) {
print " Caught: " .
$decode_sigmask->($1, \%signal_names) . "\n";
}
} else {
print "N/A\n";
}
# Memory maps sum
print "\n┌─ MEMORY MAPS (top 20 by size) " . "─"x47 . "\n";
my $maps = `awk '
/^[0-9a-f]+-[0-9a-f]+/ {hdr=\$0}
/^Size:/ {size=\$2}
/^Rss:/ {rss=\$2}
/^VmFlags:/ { if (rss>0) {print rss"\\t"size"\\t"hdr} rss=0; size=0 }
' /proc/$pid/smaps 2>/dev/null | sort -rn | head -20`;
if ($maps) {
print "RSS(MB)\tSize(MB)\tMapping\n";
foreach my $map_line (split(/\n/, $maps)) {
if ($map_line =~ /^(\d+)\s+(\d+)\s+(.+)$/) {
my $rss_mb = sprintf("%.2f", $1 / 1024);
my $size_mb = sprintf("%.2f", $2 / 1024);
print "$rss_mb\t$size_mb\t\t$3\n";
}
}
} else {
print "Unable to read memory maps\n";
}
# Recent logs
print "\n┌─ RECENT LOGS (last 20 lines) " . "─"x48 . "\n";
my $logs = `journalctl _PID=$pid -b -n 20 --no-pager -o short-precise 2>/dev/null`;
if ($logs && $logs !~ /^-- No entries --/) {
print $logs;
} else {
print "No recent logs found for this PID in current boot\n";
}
print "\n" . "─"x79 . "\n";
}
} else {
print "Stats command is only available on systemd based systems.\n";
$rs = 1;
}
exit $rs;
}
exit 0;
}
@@ -174,5 +563,5 @@ sub root
Copyright 2018 Jamie Cameron <jcameron@webmin.com>
Joe Cooper <joe@virtualmin.com>
Ilia Rostovtsev <ilia@virtualmin.com>
Ilia Ross <ilia@virtualmin.com>

View File

@@ -9,6 +9,13 @@ use Getopt::Long qw(:config permute pass_through);
use Term::ANSIColor qw(:constants);
use Pod::Usage;
# Check if root
if ($> != 0) {
die BRIGHT_RED, "Error: ", RESET, BRIGHT_YELLOW,"webmin", RESET,
" command must be run as root\n";
exit 1;
}
my $a0 = $ARGV[0];
sub main {
@@ -280,7 +287,7 @@ sub get_command_path {
}
}
if ($optref->{'commands'} &&
$optref->{'commands'} =~ /^(status|start|stop|restart|reload|force-restart|force-reload|kill)$/) {
$optref->{'commands'} =~ /^(stats|status|start|stop|restart|reload|force-restart|force-reload|kill)$/) {
exit system("$0 server $optref->{'commands'}");
} elsif ($command) {
return $command;
@@ -457,5 +464,5 @@ Returns Webmin and other modules and themes versions installed (only those for w
Copyright 2018 Jamie Cameron <jcameron@webmin.com>
Joe Cooper <joe@virtualmin.com>
Ilia Rostovtsev <ilia@virtualmin.com>
Ilia Ross <ilia@virtualmin.com>

View File

@@ -1135,6 +1135,10 @@ elsif ($type eq "CNAME") {
print &ui_table_row($text{'value_CNAME1'},
&ui_textbox("value0", $v[0], 30)." ($text{'edit_cnamemsg'})", 3);
}
elsif ($type eq "ALIAS") {
print &ui_table_row($text{'value_ALIAS1'},
&ui_textbox("value0", $v[0], 30)." ($text{'edit_cnamemsg'})", 3);
}
elsif ($type eq "MX") {
print &ui_table_row($text{'value_MX2'},
&ui_textbox("value1", $v[1], 30));
@@ -3117,7 +3121,11 @@ $slave_error = $_[0];
sub get_forward_record_types
{
return ("A", "NS", "CNAME", "MX", "HINFO", "TXT", "SPF", "DMARC", "WKS", "RP", "PTR", "LOC", "SRV", "KEY", "TLSA", "SSHFP", "CAA", "NAPTR", "NSEC3PARAM", $config{'support_aaaa'} ? ( "AAAA" ) : ( ), @extra_forward);
return ("A", $config{'support_aaaa'} ? ( "AAAA" ) : ( ), "NS", "CNAME",
$config{'allow_alias'} ? ( "ALIAS" ) : ( ),
"MX", "HINFO", "TXT", "SPF", "DMARC", "WKS", "RP", "PTR", "LOC",
"SRV", "KEY", "TLSA", "SSHFP", "CAA", "NAPTR", "NSEC3PARAM",
@extra_forward);
}
sub get_reverse_record_types

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ spf_record=0
dnssec_info=1
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -50,3 +50,4 @@ tmpl_dnssec_dt=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -47,3 +47,4 @@ restart_cmd=service named restart
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -48,3 +48,4 @@ start_cmd=systemctl start bind9.service
stop_cmd=systemctl stop bind9.service
restart_cmd=systemctl reload bind9.service
dnssec_period=21
allow_alias=0

View File

@@ -48,3 +48,4 @@ start_cmd=systemctl start named.service
stop_cmd=systemctl stop named.service
restart_cmd=systemctl reload named.service
dnssec_period=21
allow_alias=0

View File

@@ -38,3 +38,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -44,3 +44,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -48,3 +48,4 @@ start_cmd=systemctl start bind9.service
stop_cmd=systemctl stop bind9.service
restart_cmd=systemctl reload bind9.service
dnssec_period=21
allow_alias=0

View File

@@ -48,3 +48,4 @@ start_cmd=systemctl start named.service
stop_cmd=systemctl stop named.service
restart_cmd=systemctl reload named.service
dnssec_period=21
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -43,3 +43,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -44,3 +44,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ force_random=0
spf_record=0
pid_file=/var/run/named/pid
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ force_random=0
spf_record=0
pid_file=/var/run/named/pid
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -43,3 +43,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ pid_file=/var/run/named/named.pid /private/var/run/named/named.pid
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -43,3 +43,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -43,3 +43,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -42,3 +42,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -42,3 +42,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -48,3 +48,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -42,3 +42,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -45,3 +45,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -52,3 +52,4 @@ stop_cmd=systemctl stop named
restart_cmd=systemctl reload named
chroot=
auto_chroot=
allow_alias=0

View File

@@ -52,3 +52,4 @@ spf_record=0
dnssec_info=1
chroot=
auto_chroot=
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -43,3 +43,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -45,3 +45,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -46,3 +46,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -48,3 +48,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -35,3 +35,4 @@ other_slaves=1
updserial_man=1
master_ttl=1
dnssec_info=1
allow_alias=0

View File

@@ -47,3 +47,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -47,3 +47,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -47,3 +47,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -40,3 +40,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -43,3 +43,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -41,3 +41,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -58,3 +58,4 @@ other_slaves=1
force_random=0
spf_record=0
dnssec_info=1
allow_alias=0

View File

@@ -19,6 +19,7 @@ support_aaaa=Support DNS for IPv6 addresses,1,1-Yes,0-No
allow_comments=Allow comments for records,1,1-Yes,0-No
allow_wild=Allow wildcards?,1,1-Yes,0-No
allow_underscore=Allow underscores in record names?,1,1-Yes,0-No
allow_alias=Allow ALIAS records?,1,1-Yes,0-No
short_names=Convert record names to canonical form?,1,0-Yes,1-No
extra_forward=Extra record types for forward zones,0
extra_reverse=Extra record types for reverse zones,0

View File

@@ -57,6 +57,7 @@ foreach my $z (&find("zone", $vconf)) {
}
}
my $masterport = $in{'port_def'} ? undef : $in{'port'};
my $masterkey = $in{'key_def'} ? undef : $in{'key'};
my @masters = split(/\s+/, $in{'masters'});
foreach my $m (@masters) {
&check_ipaddress($m) || &check_ip6address($m) ||
@@ -106,6 +107,9 @@ my $masters = { 'name' => 'masters',
if (defined($masterport)) {
$masters->{'values'} = [ 'port', $masterport ];
}
if ($masterkey) {
$masters->{'values'} = [ 'key', $masterkey ];
}
my $dir = { 'name' => 'zone',
'values' => [ $in{'zone'} ],
'type' => 1,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 B

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
bind8/images/CAA.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
bind8/images/NAPTR.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 B

After

Width:  |  Height:  |  Size: 10 KiB

BIN
bind8/images/SSHFP.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 364 B

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -184,6 +184,7 @@ slave_ecannot=You are not allowed to edit this zone
slave_opts=Zone Options
slave_masters=Master servers
slave_masterport=Server port
slave_masterkey=Server key
slave_max=Maximum transfer time
slave_file=Records file
slave_check=Check names?
@@ -261,7 +262,7 @@ edit_upfwd=Update forward?
edit_err=Failed to save record
edit_egone=Selected record no longer exists!
edit_ettl='$1' is not a valid time-to-live
edit_eip='$1' is not a valid IP address
edit_eip='$1' is not a valid IP4 address
edit_eip6='$1' is not a valid IPv6 address
edit_ehost='$1' is not a valid hostname
edit_eserv2='$1' is not a valid service name
@@ -308,8 +309,8 @@ edit_espfa='$1' is not a valid host to allow sending from
edit_espfa2='$1' must be a hostname, not an IP address
edit_espfmx='$1' is not a valid domain name to allow MX sending from
edit_espfmxmax=You are not allowed to have more than 10 domains to allow MX sending from
edit_espfip='$1' is not a valid IP address or IP/prefix to allow sending from
edit_espfip6='$1' is not a valid IPv6 address or IPv6/prefix to allow sending from
edit_espfip='$1' is not a valid IPv4 address or IPv4 prefix to allow sending from
edit_espfip6='$1' is not a valid IPv6 address or IPv6 prefix to allow sending from
edit_espfinclude='$1' is not a valid additional domain from which mail is sent
edit_espfredirect='$1' is not a valid alternate domain name
edit_espfexp='$1' is a valid record name for a rejection message
@@ -393,10 +394,11 @@ boot_err=Download failed
boot_egzip=The root zone file is compressed, but the <tt>gzip</tt> command is not installed on your system!
boot_egzip2=Uncompression of root zone file failed : $1
type_A=Address
type_A=IPv4 Address
type_AAAA=IPv6 Address
type_NS=Name Server
type_CNAME=Name Alias
type_ALIAS=Address Alias
type_MX=Mail Server
type_HINFO=Host Information
type_NSEC3PARAM=DNSSEC Parameters
@@ -415,10 +417,11 @@ type_KEY=Public Key
type_CAA=Certificate Authority
type_NAPTR=Name Authority Pointer
edit_A=Address
edit_A=IPv4 Address
edit_AAAA=IPv6 Address
edit_NS=Name Server
edit_CNAME=Name Alias
edit_ALIAS=Address Alias
edit_MX=Mail Server
edit_HINFO=Host Information
edit_TXT=Text
@@ -437,10 +440,11 @@ edit_CAA=Certificate Authority
edit_NAPTR=Name Authority Pointer
recs_defttl=Default TTL
recs_A=Address
recs_A=IPv4 Address
recs_AAAA=IPv6 Address
recs_NS=Name Server
recs_CNAME=Name Alias
recs_ALIAS=Address Alias
recs_MX=Mail Server
recs_HINFO=Host Information
recs_TXT=Text
@@ -460,10 +464,11 @@ recs_CAA=Certificate Authority
recs_NAPTR=Name Authority
recs_delete=Delete Selected
value_A1=Address
value_A1=IPv4 Address
value_AAAA1=IPv6 Address
value_NS1=Name Server
value_CNAME1=Real Name
value_ALIAS1=Copy Address From
value_MX1=Priority
value_MX2=Mail Server
value_HINFO1=Hardware
@@ -506,7 +511,7 @@ value_spfmx=Allow sending from domain's MX hosts?
value_spfptr=Allow sending from any host in domain?
value_spfas=Additional allowed sender hosts
value_spfmxs=Additional allowed sender MX domains
value_spfip4s=Additional allowed sender IP addresses/networks
value_spfip4s=Additional allowed sender IPv4 addresses/networks
value_spfip6s=Additional allowed sender IPv6 addresses/networks
value_spfincludes=Other domains from which mail is sent
value_spfall=Action for other senders
@@ -1202,6 +1207,7 @@ dnssec_secs=seconds
dnssec_desc=Zones signed with DNSSEC typically have two keys - a zone key which must be re-generated and signed regularly, and a key signing key which remains constant. This page allows you to configure Webmin to perform this re-signing automatically.
dnssec_err=Failed to save DNSSEC key re-signing
dnssec_eperiod=Missing or invalid number of days between re-signs
dnssec_eperiod30=Number of days between re-signs must be less than 30
dnssectools_title=DNSSEC-Tools Automation
dt_conf_title=DNSSEC-Tools Automation
@@ -1355,7 +1361,7 @@ xfer_done=.. from $1 : Completed OK
xfer_count=Test transfer successfully fetched $1 records from at least one nameserver. Actual transfers by BIND should also succeed.
xfer_none=Test transfer appeared to succeed, but didn't actually fetch any records!
tls_title=SSL Keys And Certificates
tls_title=SSL Keys and Certificates
tls_ecannot=You are not allowed to edit SSL keys and certificates
tls_esupport=SSL keys and certificates are not supported on this system
tls_name=Key name
@@ -1363,8 +1369,6 @@ tls_key=Key file
tls_cert=Certificate file
tls_ca=CA certificate file
tls_ca_def=None required
tls_ecannot=You are not allowed to edit SSL keys and certificates
tls_esupport=DNS over SSL is not supported on this system
tls_none=No SSL keys have been added yet.
tls_add=Add a new SSL key.
tls_desc=The SSL keys and certificates listed on this page can be used to enable DNS over SSL/TLS.

Some files were not shown because too many files have changed in this diff Show More