Compare commits

...

260 Commits

Author SHA1 Message Date
Ilia Ross
c974bda52c Fix to make forgot links compatible across themes 2025-05-21 19:59:28 +03:00
Ilia Ross
4e2307376d Merge pull request #2480 from MacSteini/master
Updated de
2025-05-21 15:58:27 +03:00
MacSteini
a6f0d4cbcd Updated de 2025-05-21 12:55:29 +01:00
Jamie Cameron
8358bd20af Turn off caching when reading network manager config files, as they may be modified by the nm cli command
https://forum.virtualmin.com/t/virtualmin-virtualserver-ip-copy-to-services/133442/12
2025-05-20 16:43:39 -07:00
Jamie Cameron
693f3c792e Allow sessions to have a max lifetime 2025-05-19 22:18:33 -07:00
Jamie Cameron
c126e9f93e Allow sessions to have a max lifetime 2025-05-19 22:17:59 -07:00
Jamie Cameron
62a52bfc56 Code cleanups 2025-05-19 21:56:46 -07:00
Jamie Cameron
4afe69addf Line length cleanup 2025-05-19 21:56:11 -07:00
Jamie Cameron
1f33234db2 Differentiate temporary session IDs for single-use logins from real sessions 2025-05-19 21:55:56 -07:00
Jamie Cameron
7dda4c62a9 Use the sudo username in the email 2025-05-19 18:47:52 -07:00
Jamie Cameron
1780dc2b16 Merge pull request #2477 from webmin/dev/reset-password-form-simplification
Fix to simplify reset-password UI for sudo-capable users
2025-05-19 15:45:52 -07:00
Ilia Ross
7b326c7317 Fix to improve the label 2025-05-20 01:20:41 +03:00
Ilia Ross
17433e479a Fix to roll back to using existing test 2025-05-20 00:26:39 +03:00
Ilia Ross
5210f37478 Fix to simplify reset-password UI for sudo-capable users 2025-05-19 15:40:53 +03:00
Ilia Ross
8d2b6bf328 Fix consistency for the message
[no-build]
2025-05-19 15:35:52 +03:00
Ilia Ross
967e168e4b Fix to correctly specify the username in the link 2025-05-19 13:35:11 +03:00
Ilia Ross
396ac2f546 Fix to use full param names for readability and consistency 2025-05-15 13:45:19 +03:00
Ilia Ross
6ab3247d3d Fix not to show redundant hostname #2473 2025-05-15 13:16:41 +03:00
Ilia Ross
806c8f4128 Fix indent 2025-05-15 11:31:28 +03:00
Ilia Ross
afaa49591a Fix reverse flag going to the command line #2473 2025-05-15 11:31:00 +03:00
Ilia Ross
3b82950571 Fix to respect reverse order flag #2473 2025-05-15 11:14:55 +03:00
Ilia Ross
41d27ec4b4 Fix tooltip ridiculous border radius
[no-build]
2025-05-14 23:38:18 +03:00
Ilia Ross
bff5837cc0 Fix details arrow in inline mode
[no-build]
2025-05-14 23:27:44 +03:00
Ilia Ross
5395dc57fe Add API to control line-break height 2025-05-14 01:36:02 +03:00
Jamie Cameron
f5ff544439 Use format params 2025-05-10 21:58:17 -07:00
Jamie Cameron
24d17dc0c8 Keep the split value in sync with the full value 2025-05-10 16:36:03 -07:00
Jamie Cameron
4504c74504 Merge branch 'master' of github.com:webmin/webmin 2025-05-10 09:12:03 -07:00
Jamie Cameron
ffe27ae348 Disallow underscores by default in new installs
https://github.com/webmin/webmin/issues/2470
2025-05-10 09:11:54 -07:00
Ilia Ross
23b0e2491e Revert incorrect "Fix to preserve ACL even for modules with noacl flag"
This reverts commit 201d817e9d.
2025-05-09 02:08:15 +03:00
Jamie Cameron
412cc0b612 Merge branch 'master' of github.com:webmin/webmin 2025-05-08 16:06:02 -07:00
Jamie Cameron
89bac6adaa Require that the user whose password is being reset is a local Unix user 2025-05-08 16:05:56 -07:00
Jamie Cameron
0956ff159f Merge pull request #2469 from webmin/dev/config-noacl-mods
Add ability for modules with no ACL to edit config
2025-05-08 15:55:34 -07:00
Ilia Ross
dd34823ed3 Fix not to change uconfig 2025-05-09 00:43:39 +03:00
Ilia Ross
575957325d Add ability for modules with no ACL to edit config 2025-05-08 14:13:18 +03:00
Jamie Cameron
d029b1c165 Add extra check to make sure the sudo-capable user is actually capable 2025-05-07 14:26:41 -07:00
Jamie Cameron
ea151bebfd Fix permissions 2025-05-05 22:02:18 -07:00
Jamie Cameron
22946b82de Add option to show password reset link in the browser 2025-05-05 22:01:56 -07:00
Jamie Cameron
46455e1cf0 Lock link tracking files 2025-05-05 20:08:12 -07:00
Jamie Cameron
c5357f13f6 Merge branch 'master' of github.com:webmin/webmin 2025-05-05 19:05:52 -07:00
Jamie Cameron
cfeaa8fcaa Creating link directory 2025-05-05 19:05:46 -07:00
Ilia Ross
addab7910e Fix input fields widths 2025-05-06 01:28:05 +03:00
Ilia Ross
068780d24a Fix breaking user picking 2025-05-06 01:27:28 +03:00
Ilia Ross
0e78b101b4 Fix inputs width
[no-build]
2025-05-05 20:41:52 +03:00
Ilia Ross
33e5a7fdfc Fix missing label 2025-05-05 20:29:45 +03:00
Ilia Ross
88c9fa54f1 Fix to use neutral key name 2025-05-05 16:17:19 +03:00
Ilia Ross
125a744f2e Fix to load missing theme libraries 2025-05-05 16:12:52 +03:00
Jamie Cameron
8a1e3d2b2f Clean up code and add formal params 2025-05-04 19:59:52 -07:00
Jamie Cameron
5820a98f5a TLS directives need quoting 2025-05-04 18:37:49 -07:00
Jamie Cameron
36af12d39f Internal dev version bump 2025-05-04 16:55:48 -07:00
Jamie Cameron
b0557de951 DNS over TLS is only supported in version 9.17+ 2025-05-04 16:52:16 -07:00
Jamie Cameron
63710a4c44 The admin can send a password reset email for any user, even if they don't have email setup yet 2025-05-04 15:56:55 -07:00
Jamie Cameron
b3e2dabe84 Make comment more descriptive 2025-05-04 15:54:34 -07:00
Jamie Cameron
ff742eddc1 Add ability for the master admin to send forgotten password reset links 2025-05-04 15:54:08 -07:00
Jamie Cameron
d0f31831b6 Extract out functions for re-use 2025-05-04 15:39:37 -07:00
Jamie Cameron
97a9f57cbb Handle case where there is no system action
https://github.com/webmin/webmin/issues/1542
2025-05-04 11:52:30 -07:00
Jamie Cameron
b74d6ca7cc Merge branch 'master' of github.com:webmin/webmin 2025-05-04 11:41:51 -07:00
Jamie Cameron
3ba8f4a6fe Fixes to get password changes for sudo users working 2025-05-04 11:40:58 -07:00
Ilia Ross
9a48d874e2 Add support for printing more headers 2025-05-04 13:18:08 +03:00
Jamie Cameron
c5b0e4c7ff Work on password reset for sudo-capable users 2025-05-03 22:05:46 -07:00
Jamie Cameron
cc0968be8f Cleaner to use temporary variables rather than modifying gconfig 2025-05-03 20:49:04 -07:00
Ilia Ross
f63f3a6817 Add password reset link expires in option 2025-05-03 17:54:56 +03:00
Ilia Ross
b8820c6562 Add password recovery throttling 2025-05-03 01:27:50 +03:00
Ilia Ross
35bdbe19f0 Fix typo 2025-05-03 00:57:38 +03:00
Ilia Ross
76e4cd70b3 Fix to drop dots for consistency 2025-05-03 00:13:51 +03:00
Jamie Cameron
bc996a6263 Merge branch 'master' of github.com:webmin/webmin 2025-05-01 11:47:09 -07:00
Jamie Cameron
265e11eceb Support axosyslog in version detection
https://github.com/webmin/webmin/issues/2465
2025-05-01 11:46:40 -07:00
Ilia Ross
56423b138e Fix bug upon initial feature enrolment
We should always use `[Definition]` to add changes, with defaults simply hardcode rather than populated from the `[DEFAULT] section. This is how at least it was originally implemented.

Initial feature created in response to: https://forum.virtualmin.com/t/change-fail2ban-times/124311/3?u=ilia

This fix triggered by:
https://forum.virtualmin.com/t/fail2ban-intrusion-detector-firewalld-default-jail-options/133201/13?u=ilia
2025-05-01 01:37:27 +03:00
Ilia Ross
80760677c7 Fix Fail2Ban version detection
https://forum.virtualmin.com/t/fail2ban-intrusion-detector-firewalld-default-jail-options/133201/11?u=ilia
2025-05-01 00:56:36 +03:00
Ilia Ross
6367879266 Fix to denote default log filter
https://forum.virtualmin.com/t/fail2ban-intrusion-detector-firewalld-default-jail-options/133201/6?u=ilia
2025-04-30 22:41:44 +03:00
Ilia Ross
a80870980d Fix to correctly merge custom *.conf files
https://forum.virtualmin.com/t/fail2ban-intrusion-detector-firewalld-default-jail-options/133201/4?u=ilia
2025-04-30 22:32:41 +03:00
Ilia Ross
a7676f4004 Fix to break long lines nicer
https://github.com/webmin/webmin/pull/2463#issuecomment-2836316659
2025-04-30 14:43:16 +03:00
Jamie Cameron
cbcdeb9cb0 Fix TLS log parsing 2025-04-29 22:16:55 -07:00
Jamie Cameron
6415b0d8a8 Log original script path, and show it 2025-04-29 11:37:55 -07:00
Jamie Cameron
d821d58fb4 Fix typo 2025-04-29 11:27:03 -07:00
Jamie Cameron
f7f3023191 Clean up repeated and inconsistent script name variables 2025-04-29 11:17:13 -07:00
Jamie Cameron
910d011edd Make the banner cookie HTTPS only 2025-04-29 10:37:38 -07:00
Jamie Cameron
5e00b93b5c Merge pull request #2462 from webmin/dev/miniserv-2fa-probe
Add ability to make authentication in two steps
2025-04-27 21:29:31 -07:00
Ilia Ross
ff4e0ae386 Fix to split lines up
https://github.com/webmin/webmin/pull/2462#pullrequestreview-2797791341
2025-04-28 03:33:52 +03:00
Jamie Cameron
a2e6afbd06 Fix check for key in use 2025-04-27 17:28:05 -07:00
Jamie Cameron
723e169905 Allow TLS key to be selectd for a port 2025-04-27 17:22:28 -07:00
Ilia Ross
19bfe18e0f Add ability to make authentication in two steps 2025-04-28 00:55:59 +03:00
Ilia Ross
b48f6d3406 Fix to drop obsolete code 2025-04-28 00:51:04 +03:00
Jamie Cameron
6743d3b4c6 Add support for IPv6 listen-on 2025-04-27 14:22:01 -07:00
Jamie Cameron
172c504abb Add check for in-use TLS keys 2025-04-27 11:23:54 -07:00
Jamie Cameron
b92d8d11d6 Make sure atd is running if needed
https://github.com/webmin/webmin/issues/2461
2025-04-27 09:52:43 -07:00
Jamie Cameron
d073280e80 Factor out check for atd init script 2025-04-27 09:44:53 -07:00
Jamie Cameron
ebf1138788 CGI to save TLS keys 2025-04-26 21:50:44 -07:00
Jamie Cameron
3706f7862b Certs can start with BEGIN PUBLIC KEY 2025-04-26 20:25:31 -07:00
Jamie Cameron
9bd96b6448 Rate limit before checking if the user exists 2025-04-26 14:44:37 -07:00
Jamie Cameron
7ff37cd12f Add a delay based on the number of tries 2025-04-26 14:42:18 -07:00
Ilia Ross
55fd013b35 Fix to remove pointless new line that looks bad 2025-04-26 21:40:00 +03:00
Ilia Ross
014f949fdb Fix language when logging 2025-04-26 21:38:04 +03:00
Ilia Ross
cb3bde5374 Fix to set email correctly when resetting password 2025-04-26 21:37:42 +03:00
Jamie Cameron
4fbc57350f Add logging for password resets 2025-04-26 10:04:43 -07:00
Jamie Cameron
924e7e8ff5 Remove useless variable 2025-04-26 08:49:49 -07:00
Jamie Cameron
cb7de4edec Remove duplicate variable 2025-04-26 08:32:28 -07:00
Jamie Cameron
f17be6a383 Always show option to download in the background immediately 2025-04-25 20:11:45 -07:00
Jamie Cameron
bcfb698ac6 Detect case where cache is somehow empty
https://github.com/webmin/webmin/issues/2460
2025-04-25 19:50:25 -07:00
Jamie Cameron
8bd079f52f Merge branch 'master' of github.com:webmin/webmin 2025-04-25 16:51:05 -07:00
Jamie Cameron
cef76798f8 clean/reset environment will preserve variables 2025-04-25 16:50:58 -07:00
Ilia Ross
4f046c1d6d Fix to quote escape labels 2025-04-25 23:58:06 +03:00
Ilia Ross
cc83641c11 Add ability for themes to handle each "forgot_*" page 2025-04-25 20:01:30 +03:00
Ilia Ross
971c526ade Fix to lower the static delay for now 2025-04-25 11:39:27 +03:00
Jamie Cameron
717f0b1100 Work on form to edit a TLS key 2025-04-24 21:39:47 -07:00
Jamie Cameron
6ff0e50e94 Merge branch 'master' of github.com:webmin/webmin 2025-04-24 21:12:13 -07:00
Jamie Cameron
0de1844755 Work on DNS over TLS 2025-04-24 21:07:03 -07:00
Ilia Ross
e55f3bdb74 Add ability for the theme to construct own forgot link 2025-04-25 00:49:39 +03:00
Ilia Ross
25d2edeeaf Add a cooldown period for password reset request rates 2025-04-24 21:06:43 +03:00
Ilia Ross
201d817e9d Fix to preserve ACL even for modules with noacl flag
What matters now is that the module gets removed from ACLs, and the new module config page (that didn't exist before) stops working. So the simplest and best solution is to keep the module visible normally, but skip editable ACLs—since the plugin is meant to be controlled by Virtualmin permissions, and access to its config should always be allowed.

https://github.com/webmin/webmin/pull/2426/files#r1972474077
2025-04-24 11:25:03 +03:00
Ilia Ross
b2626ca9c1 Fix to default to useradmin module even for anon user 2025-04-24 10:24:17 +03:00
Ilia Ross
0553cae4e3 Fix to avoid printing switch theme code unless authed 2025-04-24 10:23:14 +03:00
Jamie Cameron
740368fc0d Use correct password hashing function 2025-04-23 20:58:48 -07:00
Jamie Cameron
7c932d3cb0 No need to create extra variables 2025-04-23 20:56:21 -07:00
Jamie Cameron
b46043de84 Check for the d variable properly 2025-04-23 20:51:59 -07:00
Ilia Ross
69e3844cec Fix critical issues when resetting the password
1. If changing password in `/etc/shadow` clone user correctly
 2. Restart miniserv after changing password in `/etc/shadow`
 3. Use correct hashing format when changing Webmin and Unix password
2025-04-23 15:18:09 +03:00
Ilia Ross
215b1332fc Fix to check if domain hash isn't empty 2025-04-23 14:15:56 +03:00
Jamie Cameron
bb8b926d52 Properly declare $d 2025-04-22 22:01:21 -07:00
Ilia Ross
967d519943 Fix to replace the table with much simpler and better layout 2025-04-22 22:25:38 +03:00
Ilia Ross
c84ef98016 Fix default mode to be login and password 2025-04-22 15:27:34 +03:00
Ilia Ross
fd153b28f3 Add improvements to the UI 2025-04-22 15:26:41 +03:00
Ilia Ross
7a3210849d Fix default system type config option to show label correctly 2025-04-22 13:45:52 +03:00
Ilia Ross
fb8339a3ca Fix to always default to fast mode
https://github.com/webmin/webmin/issues/2458#issuecomment-2818513756
2025-04-22 13:40:54 +03:00
Jamie Cameron
e0b6ae7691 Obsfucate email for display 2025-04-21 22:04:03 -07:00
Jamie Cameron
3f5ae24beb Ask for password twice 2025-04-21 19:56:20 -07:00
Jamie Cameron
8cd74c1c35 Don't show Virtualmin output when resetting a password 2025-04-21 16:55:35 -07:00
Jamie Cameron
e983ded21e Include forgotten password pages in package 2025-04-21 16:51:51 -07:00
Ilia Ross
0037d9a9ca Fix to use fast PRC mode by default 2025-04-21 16:28:38 +03:00
Jamie Cameron
a49b5fc0cb Sure as hell nobody is running BIND 8 anymore 2025-04-20 21:20:12 -07:00
Jamie Cameron
e87fc560c9 Move random flag check into a function 2025-04-20 21:15:49 -07:00
Jamie Cameron
ac21e39a88 Use standard functions for version checks 2025-04-20 20:50:51 -07:00
Jamie Cameron
d070176535 Cleanup and reformat code 2025-04-20 20:35:22 -07:00
Jamie Cameron
4c60aa1865 Include username is email subject 2025-04-20 11:15:17 -07:00
Jamie Cameron
590a3218be Cleanup old forgotten password reset key 2025-04-20 11:14:05 -07:00
Jamie Cameron
cf50dd2431 Start of work on password reset rate limiting 2025-04-20 10:54:39 -07:00
Jamie Cameron
a04646e785 Cannot reset password if you're logged in 2025-04-20 10:30:14 -07:00
Jamie Cameron
5d2debca26 Code cleanups 2025-04-20 10:24:07 -07:00
Jamie Cameron
79e5d72393 Cleanup forgotten password link files older than 1 day 2025-04-20 10:21:25 -07:00
Jamie Cameron
410d240e8b What if WEBMIN_VAR isn't set 2025-04-20 10:18:36 -07:00
Jamie Cameron
c074e150f6 Merge branch 'master' of github.com:webmin/webmin 2025-04-20 10:00:55 -07:00
Jamie Cameron
2916f5b723 Define the forgot password dir in init_config 2025-04-20 10:00:47 -07:00
Jamie Cameron
167e8f2b1f support unix user password changes 2025-04-18 22:01:56 -07:00
Ilia Ross
f71c413b6d Fix to allow proxy links to open as they are if the referrer is trusted 2025-04-19 00:31:42 +03:00
Jamie Cameron
a664809bf4 Implement forgotted password reset for Virtualmin users 2025-04-17 22:11:39 -07:00
Jamie Cameron
d8513dbd9e Fix case where error is not called in a module 2025-04-17 22:08:53 -07:00
Jamie Cameron
268b72917d CGI to un-install PHP versions 2025-04-17 21:52:25 -07:00
Jamie Cameron
4082701c48 Version detection fixes 2025-04-17 21:48:05 -07:00
Jamie Cameron
4018977aeb Code and variable scope cleanups
https://github.com/webmin/webmin/issues/2458
2025-04-17 14:15:50 -07:00
Jamie Cameron
ff0da2ca90 Code cleanups
https://github.com/webmin/webmin/issues/2458
2025-04-17 14:05:40 -07:00
Jamie Cameron
badb5b60f7 Merge branch 'master' of github.com:webmin/webmin 2025-04-17 07:39:22 -07:00
Jamie Cameron
a9652f4c88 Minor version bump 2025-04-17 07:39:12 -07:00
Ilia Ross
2febc12586 Merge pull request #2456 from MacSteini/master
Update de
2025-04-16 15:27:03 +03:00
MacSteini
625fff0c6f Update de 2025-04-16 11:32:22 +01:00
Jamie Cameron
ea973b571b Fix password change for regular webmin users 2025-04-15 21:23:10 -07:00
Jamie Cameron
ba6da02850 Don't show module index link if not in a module 2025-04-15 21:19:59 -07:00
Jamie Cameron
f15b147bd0 No need to check for the same condition twice 2025-04-15 21:16:49 -07:00
Jamie Cameron
4b927ed588 Avoid duplicating the error message 2025-04-15 21:14:06 -07:00
Jamie Cameron
8894ca18cf Merge branch 'master' of github.com:webmin/webmin 2025-04-15 19:05:19 -07:00
Jamie Cameron
d9dbcd9746 More work on forgotten password support 2025-04-14 22:44:55 -07:00
Ilia Ross
00ad7fec7a Fix broken Hungarian translations #2455 2025-04-15 01:04:50 +03:00
Jamie Cameron
f76451975c Fix allow-update check
https://forum.virtualmin.com/t/virtualmin-dns-fails-to-detect-rndc-freeze-is-needed/132653
2025-04-12 21:42:41 -07:00
Jamie Cameron
315664a1e1 Merge branch 'master' of github.com:webmin/webmin 2025-04-12 11:00:36 -07:00
Jamie Cameron
18a4c86e2f Work on forgotten password page 2025-04-12 11:00:30 -07:00
Ilia Ross
f65625047b Fix to convert entities to ASCII before printing to logs 2025-04-12 18:26:26 +03:00
Ilia Ross
8d0f19f64d Fix to simplify error print 2025-04-12 18:25:18 +03:00
Jamie Cameron
a768e731cf Allow anonymous access to the forgotten password CGIs 2025-04-11 22:25:17 -07:00
Jamie Cameron
535accda63 Merge branch 'master' of github.com:webmin/webmin 2025-04-11 22:12:18 -07:00
Jamie Cameron
a6c3cccbac Code cleanups 2025-04-11 22:11:59 -07:00
Ilia Ross
d2d16608dc Fix to filter out potentially dangerous characters
https://github.com/webmin/webmin/issues/1838#issuecomment-2795296531
2025-04-11 14:12:33 +03:00
Ilia Ross
196e3ed6c4 Fix to drop trailing dot to align 2025-04-11 12:43:35 +03:00
Jamie Cameron
acdc65c5d7 Code cleanups 2025-04-10 21:39:48 -07:00
Jamie Cameron
dffdd66fb4 UI to enable forgotten password recovery 2025-04-10 21:37:54 -07:00
Jamie Cameron
f6fc4490db Clean up code and check for existing flag before checking variables 2025-04-10 21:32:52 -07:00
Jamie Cameron
73a882b7a0 Merge branch 'master' of github.com:webmin/webmin 2025-04-10 21:29:30 -07:00
Jamie Cameron
5de2d599a2 Delete webmin module from debian package properly 2025-04-10 21:28:08 -07:00
Ilia Ross
cf2806edac Fix to check if local version of mysqldump supports --set-gtid-purged flag
https://forum.virtualmin.com/t/schedule-backup-database-remote-mysql-error/132874/25?u=ilia
2025-04-10 19:36:01 +03:00
Jamie Cameron
0bf83ea2a8 Merge pull request #2447 from webmin/dev/fix-ssl-scheduled-renewals-for-webmin
Fix to respect option to copy new key and certificate to Webmin
2025-04-09 21:32:41 -07:00
Ilia Ross
544db4b1a9 Merge pull request #2451 from MacSteini/master
Update de
2025-04-09 11:43:28 +03:00
MacSteini
f7e4b57c42 Update de 2025-04-09 09:41:47 +01:00
MacSteini
9e9fc9bc87 Update de 2025-04-09 08:40:45 +01:00
MacSteini
23dff016cd Update de 2025-04-09 08:36:45 +01:00
Jamie Cameron
c191caf04b Add a Webmin user field for email address 2025-04-08 20:58:28 -07:00
Jamie Cameron
05f4b8ff96 log package deletion 2025-04-08 20:19:24 -07:00
Jamie Cameron
f30275b49e Merge branch 'master' of github.com:webmin/webmin 2025-04-08 20:13:05 -07:00
Jamie Cameron
3e1b07f823 Add UI for deleting packages and modules 2025-04-08 20:12:38 -07:00
Jamie Cameron
49990e5949 Merge pull request #2450 from MacSteini/master
Update de
2025-04-08 18:36:35 -07:00
MacSteini
434d46643b Update de 2025-04-09 01:16:04 +01:00
MacSteini
33ed262ff0 Merge branch 'webmin:master' into master 2025-04-09 01:11:14 +01:00
Ilia Ross
0bc1dae232 Fix no use logic 2025-04-08 12:12:07 +03:00
Ilia Ross
2760336b40 Fix to use a different type of double-negation logic
https://github.com/webmin/webmin/pull/2447#discussion_r2030265612
2025-04-07 16:42:48 +03:00
Jamie Cameron
18bd46fe93 Work on support for removing packages 2025-04-06 18:58:58 -07:00
Jamie Cameron
fde1b02880 Factor out function to get domains list 2025-04-06 17:21:16 -07:00
Jamie Cameron
f94dabb88c Add form to install a new PHP package 2025-04-06 12:38:12 -07:00
Jamie Cameron
9e9d674206 Show version used by Virtualmin as well 2025-04-06 11:42:03 -07:00
Jamie Cameron
bd5c0bfa54 No need to show domains column if virtualmin isn't installed 2025-04-06 11:33:49 -07:00
Jamie Cameron
b1fdf42530 Don't set a flag that's already set
https://forum.virtualmin.com/t/schedule-backup-database-remote-mysql-error/132874/10
2025-04-03 21:55:59 -07:00
Ilia Ross
f2cba6af00 Fix to respect option to copy new key and certificate to Webmin
https://forum.virtualmin.com/t/letsencrypt-automatic-certificate-advice/132891/3?u=ilia
2025-04-03 16:51:45 +03:00
Jamie Cameron
e5beb7f022 Merge branch 'master' of github.com:webmin/webmin 2025-04-01 22:25:13 -07:00
Jamie Cameron
99f6638194 Coe style cleaups 2025-04-01 22:25:09 -07:00
Jamie Cameron
aa55e33b7e Work on page to show PHP versions 2025-04-01 22:24:33 -07:00
Ilia Ross
b3f28ee4f7 Fix to use new API for remote QR code generation
https://forum.virtualmin.com/t/two-factor-authenticator-is-missing-google-option/132766/14?u=ilia
2025-04-01 14:49:22 +03:00
MacSteini
2ce1157190 Update de 2025-04-01 10:27:58 +01:00
Ilia Ross
d40dbe391e Update translations 2025-03-31 15:42:27 +03:00
Ilia Ross
0fc1bea55e Update TOTP help page 2025-03-31 15:41:48 +03:00
Ilia Ross
225d113d38 Fix not to switch to remote user in case of admin login 2025-03-30 15:43:46 +03:00
Jamie Cameron
663640d801 Merge pull request #2445 from webmin/dev/fix-listing-mysql-auth-plugins
Fix to dynamically list auth plugins in MySQL/MariaDB
2025-03-29 22:07:05 -05:00
Ilia Ross
8bc5ba7a32 Fix to correctly display hashed passwords in UI 2025-03-29 22:19:44 +02:00
Ilia Ross
a10de5a9dc Fix updating unix_socket plugin in default mode 2025-03-29 21:05:37 +02:00
Ilia Ross
a67e327627 Fix to dynamically list auth plugins in MySQL/MariaDB 2025-03-29 16:25:42 +02:00
Ilia Ross
99889c1f30 Fix to use prepared statement instead when getting account lock status 2025-03-29 16:00:30 +02:00
Ilia Ross
42b8f2c25c Add support for account locking in MariaDB 2025-03-29 15:53:37 +02:00
Ilia Ross
6905548fa4 Fix to correctly set the password with auth plugin
https://forum.virtualmin.com/t/maria-db-failed-to-save-user/132794/4
2025-03-29 15:19:34 +02:00
Jamie Cameron
4ae5ec1694 Fix links to edit pages with non-original zone types
https://github.com/webmin/webmin/issues/2443
2025-03-27 07:22:54 -07:00
Jamie Cameron
f3a841d2b9 Merge branch 'master' of github.com:webmin/webmin 2025-03-23 10:42:53 -07:00
Jamie Cameron
2aee714a81 Handle case where two interfaces are modified
https://github.com/webmin/webmin/issues/1546
2025-03-23 10:42:45 -07:00
Ilia Ross
16fec003dc Fix to use shell command with direct file writing for EOL data file 2025-03-23 15:44:36 +02:00
Ilia Ross
fdbf960a2c Fix to use dmesg -T for Linux systems #2442 2025-03-23 03:07:50 +02:00
Ilia Ross
e8b2b21bce Fix to stop rebuilding on release edit
[no-build]
2025-03-22 18:56:44 +02:00
Ilia Ross
1f07fdb274 Fix to prefer JSON::XS over JSON::PP if available for better performance 2025-03-21 16:55:32 +02:00
Ilia Ross
7b85a75a2b Fix not to add ? unless there is a query
[no-build]
2025-03-21 12:54:08 +02:00
Ilia Ross
2185f2068d Update pod
[no-build]
2025-03-21 12:53:05 +02:00
Jamie Cameron
e60be7133b Add support for template variables to help pages 2025-03-20 20:02:47 -07:00
Jamie Cameron
4021b6d8bb Merge branch 'master' of github.com:webmin/webmin 2025-03-20 15:08:23 -07:00
Jamie Cameron
5a777e9395 Dynamic updates may also be enabled globally
https://forum.virtualmin.com/t/virtualmin-dns-fails-to-detect-rndc-freeze-is-needed/132653
2025-03-20 14:55:54 -07:00
Ilia Ross
51e2ebec70 Merge pull request #2441 from MacSteini/master
Update de
2025-03-20 14:12:43 +02:00
MacSteini
afe100d9f0 Update de 2025-03-20 11:26:56 +00:00
Jamie Cameron
eca9472980 Merge pull request #2437 from webmin/dev/fix-dovecot-listen
Add support to configure listen for any type of address
2025-03-19 18:53:53 -07:00
Ilia Ross
62c02d1273 Add TOML as editable by default #2438 2025-03-20 03:23:33 +02:00
Ilia Ross
d74e7e66c5 Fix to simplify regex check 2025-03-19 13:31:37 +02:00
Jamie Cameron
7250c44648 We can use the -cgi binary as a fallback 2025-03-18 21:58:22 -07:00
Jamie Cameron
31c7e63407 Show the PHP binary and version 2025-03-18 21:56:30 -07:00
Ilia Ross
264ecae147 Fix regex to match more accurately 2025-03-19 02:15:55 +02:00
Ilia Ross
6dd8915808 Fix to simplify check 2025-03-19 02:13:25 +02:00
Ilia Ross
48602503cd Add support to configure listen for any type of address
https://github.com/webmin/webmin/issues/2436
2025-03-18 14:04:38 +02:00
Jamie Cameron
13acaeece7 Stop creating a changelog that is no longer used 2025-03-17 15:49:07 -07:00
Jamie Cameron
bb787e4e1c Merge branch 'master' of github.com:webmin/webmin 2025-03-17 15:15:41 -07:00
Jamie Cameron
d4fab15024 No need to switch users if we already switched 2025-03-17 15:15:36 -07:00
Joe Cooper
1cb53ff00a Merge pull request #2435 from swelljoe/fix-makemoduledeb
We don't have to build debs on Debian
2025-03-16 18:43:50 -05:00
Joe Cooper
8043aabf18 We don't have to build debs on Debian 2025-03-16 18:43:04 -05:00
Ilia Ross
3a94ea3788 Update translations 2025-03-15 21:52:41 +02:00
Jamie Cameron
2183088706 Merge branch 'master' of github.com:webmin/webmin 2025-03-15 09:59:08 -07:00
Jamie Cameron
3736f26a84 Handle case where --to-destination is followed by a bare IPv6 address
https://github.com/webmin/webmin/issues/2434
2025-03-15 09:58:46 -07:00
Ilia Ross
f2307ae1fa Fix to stop using MD5 module that was deprecated 2025-03-14 14:42:49 +02:00
Jamie Cameron
45ef8d11c1 Merge branch 'master' of github.com:webmin/webmin 2025-03-13 17:13:44 -07:00
Jamie Cameron
b17df99700 Check the UID that is used for file operations 2025-03-13 17:13:37 -07:00
Ilia Ross
a3f2e64315 Update date 2025-03-14 00:29:51 +02:00
Ilia Ross
853bde5e1a Update CHANGELOG.md 2025-03-14 00:24:23 +02:00
Ilia Ross
083f9b09a2 Ensure li tags are always closed 2025-03-14 00:10:12 +02:00
Jamie Cameron
81e8fc6c37 Merge branch 'master' of github.com:webmin/webmin 2025-03-12 21:39:35 -07:00
Jamie Cameron
b9d2910d60 Run the man command as nobody, to prevent misuse of the section param 2025-03-12 21:38:04 -07:00
Ilia Ross
574f66c251 Merge pull request #2433 from MacSteini/master
Update de
2025-03-12 18:24:45 +02:00
MacSteini
56a231e78d Update de 2025-03-12 11:44:43 +00:00
Ilia Ross
85e7f6c292 Fix to filter out scope identifier
* We could support it but it would be much more work
2025-03-10 13:32:39 +02:00
Ilia Ross
9fa35cc2c9 Fix to save IPv6 nameservers 2025-03-10 13:31:32 +02:00
Jamie Cameron
23cb74fa35 Add function to show warnings in records 2025-03-09 16:34:14 -07:00
Jamie Cameron
e1d87fac1c Some sendmail hash files end with .cdb
https://forum.virtualmin.com/t/issues-editing-sendmail-8-18-1-on-webmin-2-302/132460/7
2025-03-07 17:21:25 -08:00
Jamie Cameron
9ba9bfd524 Merge branch 'master' of github.com:webmin/webmin 2025-03-06 19:03:47 -08:00
Jamie Cameron
6c5c5fa225 No need for modprobe since IPv6 is always in the kernel these days
https://github.com/webmin/webmin/issues/2432
2025-03-06 18:51:14 -08:00
Ilia Ross
495a196b2f Fix type when adding addr 2025-03-06 14:22:49 +02:00
Jamie Cameron
50eb61b89e Use the ip command instead of ifconfig 2025-03-05 20:56:42 -08:00
Jamie Cameron
3cb358fe9e Preserve ordering in module.info files 2025-03-05 11:23:09 -08:00
258 changed files with 4657 additions and 2945 deletions

View File

@@ -7,7 +7,6 @@ on:
release:
types:
- published
- edited
jobs:
build:

View File

@@ -1,5 +1,13 @@
## Changelog
#### 2.303 (March 14, 2025)
* Fix permissions error when attempting to open a temp file for writing
* Fix Network Configuration module to use `ip` command instead of `ifconfig` on Debian systems
* Fix to correctly save IPv6 nameservers in Network Configuration module
* Fix to run `man` as `nobody` to prevent section param misuse in System Documentation module
* Add support for Sendmail hash files ending with `.cdb`
* Update German translations
#### 2.302 (March 3, 2025)
* Add ability to preserve allow/deny IPs in Webmin Configuration module #2427
* Add enhancements to module config saving to ensure reliability under all conditions

File diff suppressed because one or more lines are too long

View File

@@ -104,6 +104,7 @@ while(my $l = <$fh>) {
[ split(/\s+/, $gconfig{"ownmods_$user[0]"} || "") ];
$user{'logouttime'} = $logout{$user[0]};
$user{'real'} = $gconfig{"realname_$user[0]"};
$user{'email'} = $user[14];
push(@rv, \%user);
}
}
@@ -482,7 +483,8 @@ else {
($user->{'temppass'} || ""),":",
($user->{'twofactor_provider'} || ""),":",
($user->{'twofactor_id'} || ""),":",
($user->{'twofactor_apikey'} || ""),
($user->{'twofactor_apikey'} || ""),":",
($user->{'email'} || ""),
"\n");
&close_tempfile($fh);
&unlock_file($miniserv{'userfile'});
@@ -672,7 +674,8 @@ else {
$user->{'temppass'},":",
$user->{'twofactor_provider'},":",
$user->{'twofactor_id'},":",
$user->{'twofactor_apikey'},
$user->{'twofactor_apikey'},":",
$user->{'email'},
"\n");
}
else {
@@ -1408,20 +1411,20 @@ foreach my $s (keys %sessiondb) {
dbmclose(%sessiondb);
}
=head2 create_session_user(\%miniserv, user)
=head2 create_session_user(\%miniserv, user, [lifetime])
Creates a new session ID that's already logged in as the given user
=cut
sub create_session_user
{
my ($miniserv, $username) = @_;
my ($miniserv, $username, $lifetime) = @_;
return undef if (&is_readonly_mode());
&open_session_db($miniserv);
my $sid = &generate_random_session_id();
return undef if (!$sid);
my $t = time();
$sessiondb{$sid} = "$username $t 127.0.0.1";
$sessiondb{$sid} = "$username $t 127.0.0.1".($lifetime ? " ".$lifetime : "");
dbmclose(%sessiondb);
return $sid;
}
@@ -1714,7 +1717,7 @@ elsif ($mode == 2) {
}
else {
# Try detecting system default first
if (&foreign_available('useradmin')) {
if (&foreign_installed('useradmin')) {
&foreign_require('useradmin');
return &useradmin::encrypt_password($pass, $salt, 1);
}
@@ -2325,5 +2328,35 @@ if (!$sid) {
return $sid eq 'bad' ? undef : $sid;
}
# generate_random_id()
# Generate an ID string that can be used for a password reset link
sub generate_random_id
{
if (open(my $RANDOM, "</dev/urandom")) {
my $sid;
my $tmpsid;
if (read($RANDOM, $tmpsid, 16) == 16) {
$sid = lc(unpack('h*',$tmpsid));
}
close($RANDOM);
return $sid;
}
return undef;
}
# obsfucate_email(email)
# Convert an email like foo@bar.com to f**@b**.com
sub obsfucate_email
{
my ($email) = @_;
my ($mailbox, $dom) = split(/\@/, $email);
$mailbox = substr($mailbox, 0, 1) . ("*" x (length($mailbox)-1));
my @doms;
foreach my $d (split(/\./, $dom)) {
push(@doms, substr($d, 0, 1) . ("*" x (length($d)-1)));
}
return $mailbox."\@".join(".", @doms);
}
1;

View File

@@ -159,6 +159,10 @@ print &ui_table_row($text{'edit_pass'},
print &ui_table_row($text{'edit_real'},
&ui_textbox("real", $user{'real'}, 60));
# Contact email for recovery
print &ui_table_row($text{'edit_email'},
&ui_textbox("email", $user{'email'}, 60));
# Storage type
if ($in{'user'}) {
print &ui_table_row($text{'edit_proto'},
@@ -457,6 +461,9 @@ if ($in{'user'}) {
if ($access{'switch'} && $main::session_id && $in{'user'} ne $remote_user) {
push(@buts, [ "but_switch", $text{'edit_switch'} ]);
}
if ($gconfig{'forgot_pass'}) {
push(@buts, [ "but_forgot", $text{'edit_forgot'} ]);
}
if ($access{'delete'}) {
push(@buts, [ "but_delete", $text{'delete'} ]);
}

37
acl/forgot_form.cgi Executable file
View File

@@ -0,0 +1,37 @@
#!/usr/local/bin/perl
# Show form for force sending a password reset link
use strict;
use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
require './acl-lib.pl';
our (%in, %text);
&foreign_require("webmin");
&error_setup($text{'forgot_err'});
&ReadParse();
&can_edit_user($in{'user'}) || &error($text{'edit_euser'});
my $u = &get_user($in{'user'});
$u || &error($text{'edit_egone'});
&ui_print_header(undef, $text{'forgot_title'}, "");
print $text{'forgot_desc'},"<p>\n";
print &ui_form_start("forgot_send.cgi", "post");
print &ui_hidden("user_acc", $u->{'name'});
print &ui_table_start($text{'forgot_header'}, undef, 2);
print &ui_table_row($text{'forgot_user'},
$u->{'name'} eq "root"
? &ui_textbox("user", $u->{'name'}, 12)
: "<tt>".$u->{'name'}."</tt>");
print &ui_table_row($text{'forgot_email'},
&ui_opt_textbox("email", $u->{'email'}, 60,
$text{'forgot_email_def'}."<br>\n",
$text{'forgot_email_sel'}));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'forgot_send'} ] ]);
&ui_print_footer("", $text{'index_return'});

87
acl/forgot_send.cgi Executable file
View File

@@ -0,0 +1,87 @@
#!/usr/local/bin/perl
# Actually send the password reset email
use strict;
use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
require './acl-lib.pl';
our (%in, %text, %gconfig);
&foreign_require("webmin");
&error_setup($text{'forgot_err'});
&ReadParse();
&can_edit_user($in{'user_acc'}) || &error($text{'edit_euser'});
my $wuser = &get_user($in{'user_acc'});
$wuser || &error($text{'edit_egone'});
# Validate inputs
$in{'email_def'} || $in{'email'} =~ /^\S+\@\S+$/ ||
&error($text{'forgot_eemail'});
my $unixuser;
if ($in{'user'} ne $in{'user_acc'}) {
&foreign_require("useradmin");
my ($uinfo) = grep { $_->{'user'} eq $in{'user'} }
&useradmin::list_users();
$uinfo || &error($text{'forgot_eunix'});
my $sudo = &useradmin::can_user_sudo_root($in{'user'});
&error($text{'forgot_enosudo'}) if ($sudo < 0);
&error($text{'forgot_ecansudo'}) if (!$sudo);
$unixuser = $in{'user'};
}
# Generate a random ID and tracking file for this password reset
my $now = time();
my %link = ( 'id' => &generate_random_id(),
'remote' => $ENV{'REMOTE_ADDR'},
'time' => $now,
'user' => $wuser->{'name'},
'uuser' => $unixuser, );
$link{'id'} || &error($text{'forgot_erandom'});
&make_dir($main::forgot_password_link_dir, 0700);
my $linkfile = $main::forgot_password_link_dir."/".$link{'id'};
&lock_file($linkfile);
&write_file($linkfile, \%link);
&unlock_file($linkfile);
my $baseurl = &get_webmin_email_url();
my $url = $baseurl.'/forgot.cgi?id='.&urlize($link{'id'});
&load_theme_library();
$url = &theme_forgot_url($baseurl, $link{'id'}, $unixuser || $link{'user'})
if (defined(&theme_forgot_url));
&ui_print_header(undef, $text{'forgot_title'}, "");
my $username = $unixuser || $wuser->{'name'};
if ($in{'email_def'}) {
# Just show the link
my $timeout = $gconfig{'passreset_timeout'} || 15;
print "<p>",&text('forgot_link', $username, $timeout),"</p>\n";
print "<p><tt>".$url."</tt></p>\n";
&webmin_log("forgot", "link", undef,
{ 'user' => $username,
'unix' => $unixuser ? 1 : 0 });
}
else {
# Construct and send the email
&foreign_require("mailboxes");
my $msg = &text('forgot_adminmsg', $wuser->{'name'}, $url, $baseurl);
$msg =~ s/\\n/\n/g;
$msg = join("\n", &mailboxes::wrap_lines($msg, 75))."\n";
my $subject = &text('forgot_subject', $username);
print &text('forgot_sending',
&html_escape($in{'email'}), $username),"<br>\n";
&mailboxes::send_text_mail(&mailboxes::get_from_address(),
$in{'email'},
undef,
$subject,
$msg);
print $text{'forgot_sent'},"<p>\n";
&webmin_log("forgot", "admin", undef,
{ 'user' => $username,
'unix' => $unixuser ? 1 : 0,
'email' => $in{'email'} });
}
&ui_print_footer("", $text{'index_return'});

View File

@@ -280,16 +280,18 @@ print &ui_links_row(\@rowlinks);
}
# user_link(user, cgi, param)
# Return HTML for a link to edit one user
sub user_link
{
my $lck = $_[0]->{'pass'} =~ /^\!/ ? 1 : 0;
my $ro = $_[0]->{'readonly'};
return &ui_checkbox("d", $_[0]->{'name'}, "", 0).
my ($user, $cgi, $param) = @_;
my $lck = $user->{'pass'} =~ /^\!/ ? 1 : 0;
my $ro = $user->{'readonly'};
return &ui_checkbox("d", $user->{'name'}, "", 0).
($lck ? "<i>" : "").
($ro ? "<b>" : "").
ui_link("$_[1]?$_[2]=".&urlize($_[0]->{'name'}),
$_[0]->{'name'}).
($_[0]->{'twofactor_id'} ? "*" : "").
&ui_link("$cgi?$param=".&urlize($user->{'name'}),
$user->{'name'}).
($user->{'twofactor_id'} ? "*" : "").
($ro ? "</b>" : "").
($lck ? "</i>" : "");
}

View File

@@ -1,41 +1,42 @@
index_title=Webmin-Benutzer
index_user=Benutzer
index_title=Webmin-Benutzer:innen
index_user=Benutzer:in
index_modules=Module
index_create=Einen neuen privilegierten Benutzer erstellen.
index_screate=Einen neuen sicheren Benutzer erstellen.
index_convert=Unix-zu-Webmin-Benutzer konvertieren
index_create=Neuen privilegierten Benutzer:in erstellen.
index_screate=Neue:n sichere:n Benutzer:in erstellen.
index_convert=Unix-Benutzer:innen in Webmin-Benutzer:innen konvertieren
index_cert=SSL-Zertifikat anfordern
index_twofactor=Zwei-Faktor-Authentifizierung
index_certmsg=Klicken Sie auf diese Schaltfläche, um ein SSL-Zertifikat anzufordern, das Ihnen ermöglicht, sich sicher bei Webmin anzumelden, ohne einen Benutzernamen und ein Passwort eingeben zu müssen.
index_return=Benutzerliste
index_certmsg=Klicken Sie auf diese Schaltfläche, um ein SSL-Zertifikat anzufordern, das eine sichere Anmeldung bei Webmin ohne Benutzername und Passwort ermöglicht.
index_return=Benutzer:innenliste
index_none=Keine
index_edit=Modul-ACL bearbeiten:
index_edit=Modul-ACL bearbeiten :
index_global=Globale ACL
index_users=Webmin-Benutzer
index_users=Webmin-Benutzer:innen
index_groups=Webmin-Gruppen
index_group=Gruppe
index_nousers=Keine bearbeitbaren Webmin-Benutzer definiert.
index_nousers=Keine bearbeitbaren Webmin-Benutzer:innen definiert.
index_nogroups=Keine Webmin-Gruppen definiert.
index_gcreate=Eine neue Webmin-Gruppe erstellen.
index_gcreate=Neue Webmin-Gruppe erstellen.
index_members=Mitglieder
index_modgroups=Module aus Gruppe $1
index_sync=Unix-Benutzersynchronisierung konfigurieren
index_modgroups=Module aus der Gruppe $1
index_sync=Synchronisation von Unix-Benutzer:innen konfigurieren
index_unix=Unix-Benutzerauthentifizierung konfigurieren
index_sessions=Anmeldesitzungen anzeigen
index_rbac=RBAC einrichten
index_delete=Ausgewählte löschen
index_joingroup=Zur Gruppe hinzufügen:
index_eulist=Fehler beim Auflisten der Benutzer: $1
index_eglist=Fehler beim Auflisten der Gruppen: $1
index_eulist=Fehler beim Auflisten der Benutzer:innen : $1
index_eglist=Fehler beim Auflisten der Gruppen : $1
edit_title=Webmin-Benutzer bearbeiten
edit_title2=Webmin-Benutzer erstellen
edit_title3=Neuen sicheren Webmin-Benutzer erstellen
edit_readonly=Dieser Webmin-Benutzer sollte nicht bearbeitet werden, da er vom $1-Modul verwaltet wird. <a href='$2'>Klicken Sie hier</a>, um diese Warnung zu umgehen und den Benutzer dennoch zu bearbeiten beachten Sie jedoch, dass alle manuellen Änderungen überschrieben werden können!
edit_rights=Zugriffsrechte für Webmin-Benutzer
edit_user=Benutzername
edit_cloneof=Webmin-Benutzer klonen
edit_title=Webmin-Benutzer:in bearbeiten
edit_title2=Webmin-Benutzer:in erstellen
edit_title3=Sichere:n Webmin-Benutzer:in erstellen
edit_readonly=Dieser Webmin-Benutzer:in sollte nicht bearbeitet werden, da er:sie vom Modul $1 verwaltet wird. <a href='$2'>Hier klicken</a>, um diese Warnung zu umgehen und den:die Benutzer:in dennoch zu bearbeiten beachten Sie jedoch, dass manuelle Änderungen überschrieben werden können!
edit_rights=Zugriffsrechte für Webmin-Benutzer:in
edit_user=Benutzer:innenname
edit_cloneof=Webmin-Benutzer:in wird geklont
edit_real=Echter Name
edit_email=Kontakt-E-Mail
edit_group=Mitglied der Gruppe
edit_pass=Passwort
edit_same=Gleich wie Unix
@@ -43,469 +44,491 @@ edit_lock=Kein Passwort akzeptiert
edit_pam=PAM-Authentifizierung
edit_unix=Unix-Authentifizierung
edit_extauth=Externes Authentifizierungsprogramm
edit_dont=Nicht ändern
edit_set=Setze auf
edit_dont=Keine Änderung
edit_set=Setzen auf
edit_passlocked=Passwort wurde seit $1 Tagen nicht geändert Konto gesperrt!
edit_passmax=Passwort wurde seit $1 Tagen nicht geändert muss beim nächsten Login geändert werden
edit_passold=Passwort wurde zuletzt vor $1 Tagen geändert
edit_passold=Passwort zuletzt vor $1 Tagen geändert
edit_passtoday=Passwort wurde vor weniger als einem Tag geändert
edit_modules=Module
edit_clone=Klonen
edit_twofactor=Art der Zwei-Faktor-Authentifizierung
edit_twofactorprov=Verwenden von Anbieter $1 mit ID $2
edit_twofactorcancel=Zwei-Faktor-Authentifizierungsanforderung entfernen
edit_twofactornone=Keine eingerichtet
edit_twofactoradd=Zwei-Faktor-Authentifizierung für Benutzer aktivieren
edit_twofactor=Zwei-Faktor-Authentifizierungstyp
edit_twofactorprov=Verwendet Anbieter:in $1 mit ID $2
edit_twofactorcancel=Pflicht zur Zwei-Faktor-Authentifizierung entfernen
edit_twofactornone=Noch nicht eingerichtet
edit_twofactoradd=Zwei-Faktor für Benutzer:in aktivieren
edit_lang=Sprache
edit_locale=Gebietsschema
edit_notabs=Module kategorisieren?
edit_logout=Abmeldezeit bei Inaktivität
edit_logout=Zeit bis automatische Abmeldung
edit_mins=Minuten
edit_chars=Buchstaben
edit_minsize=Minimale Passwortlänge
edit_nochange=Änderung des Passworts erzwingen?
edit_nochange=Passwortwechsel-Tage erzwingen?
edit_cert=SSL-Zertifikatsname
edit_none=None
edit_ips=IP-Zugriffssteuerung
edit_all=Von allen Adressen erlauben
edit_allow=Nur von aufgelisteten Adressen erlauben
edit_deny=Von aufgelisteten Adressen verweigern
edit_ipdesc=Die IP-Zugriffssteuerung für Benutzer funktioniert genauso wie die globale IP-Zugriffssteuerung im Webmin-Konfigurationsmodul. Nur wenn ein Benutzer die globalen Kontrollen besteht, werden auch die hier angegebenen überprüft.
edit_skill=Fähigkeitsstufe
edit_risk=Risikoebene
edit_risk_high=Superbenutzer
edit_risk_medium=Admin-Benutzer
edit_risk_low=Normaler Benutzer
edit_groupmods=(Zusätzlich zu Modulen aus der Gruppe)
edit_euser=Sie dürfen diesen Benutzer nicht bearbeiten
edit_egone=Ausgewählter Benutzer existiert nicht mehr!
edit_ecreate=Sie dürfen keine Benutzer erstellen
edit_none=Keine
edit_ips=IP-Zugriffskontrolle
edit_all=Zugriff von allen Adressen erlauben
edit_allow=Nur Zugriff von gelisteten Adressen erlauben
edit_deny=Zugriff von gelisteten Adressen verweigern
edit_ipdesc=Die IP-Zugriffskontrolle für Benutzer:innen funktioniert wie die globale IP-Zugriffskontrolle im Webmin-Konfigurationsmodul. Nur wenn globale Regeln bestanden werden, gelten die hier definierten zusätzlich.
edit_skill=Kompetenzstufe
edit_risk=Risikostufe
edit_risk_high=Superuser
edit_risk_medium=Admin-Benutzer:in
edit_risk_low=Normale:r Benutzer:in
edit_groupmods=(Zusätzlich zu den Modulen aus der Gruppe)
edit_euser=Sie dürfen diesen:die Benutzer:in nicht bearbeiten
edit_egone=Ausgewählte:r Benutzer:in existiert nicht mehr!
edit_ecreate=Sie dürfen keine Benutzer:innen erstellen
edit_theme=Persönliches UI-Theme
edit_themeglobal=Von Webmin-Konfiguration
edit_themeglobal=Aus Webmin-Konfiguration
edit_themedef=Legacy-Theme
edit_overlay=Persönliches Theme-Overlay
edit_overlayglobal=None Standard-Theme verwenden
edit_overlayglobal=Keines Theme-Standardeinstellungen verwenden
edit_log=Protokolle anzeigen
edit_selall=Alle auswählen
edit_invert=Auswahl umkehren
edit_hide=Ungenutzte ausblenden
edit_switch=Zum Benutzer wechseln
edit_return=Webmin-Benutzer
edit_hide=Nicht verwendete ausblenden
edit_switch=Zu Benutzer:in wechseln
edit_forgot=Link zum Zurücksetzen des Passworts senden
edit_return=Webmin-Benutzer:in
edit_return2=Webmin-Gruppe
edit_rbacdeny=RBAC-Zugriffsmodus
edit_rbacdeny0=RBAC steuert nur ausgewählte Modul-ACLs
edit_rbacdeny1=RBAC steuert alle Module und ACLs
edit_global=Berechtigungen für alle Module
edit_templock=Vorübergehend gesperrt
edit_temppass=Änderung beim nächsten Login erzwingen
edit_templock=Temporär gesperrt
edit_temppass=Änderung des Passworts beim nächsten Login erzwingen
edit_days=Erlaubte Wochentage
edit_alldays=Jeden Tag
edit_alldays=Jeder Tag
edit_seldays=Nur ausgewählte Tage ..
edit_hours=Erlaubte Tageszeiten
edit_hours=Erlaubte Uhrzeiten
edit_allhours=Jederzeit
edit_selhours=Von $1:$2 bis $3:$4
edit_ui=Benutzeroberflächenoptionen
edit_security=Sicherheits- und Einschränkungsoptionen
edit_security=Sicherheits- und Limit-Optionen
edit_mods=Verfügbare Webmin-Module
edit_modsg=Verfügbare Webmin-Module (neben denen aus der Gruppe)
edit_modsg=Verfügbare Webmin-Module (zusätzlich zu den aus der Gruppe)
edit_proto=Speichertyp
edit_proto_mysql=MySQL-Datenbank
edit_proto_postgresql=PostgreSQL-Datenbank
edit_proto_ldap=LDAP-Server
edit_proto_=Lokale Dateien
edit_safe=Privilegienstufe
edit_safe0=Uneingeschränkt
edit_safe=Berechtigungslevel
edit_safe0=Unbeschränkt
edit_safe1=Nur sichere Module
edit_unsafe=Auf uneingeschränkt zurücksetzen
edit_unsafe=Zurücksetzen auf unbeschränkt
save_err=Fehler beim Speichern des Benutzers
save_ename='$1' ist kein gültiger Benutzername
save_eunixname=Der Benutzername '$1' ist kein Unix-Benutzer und kann daher im sicheren Modus nicht verwendet werden
save_enamewebmin=Der Benutzername 'webmin' ist für interne Zwecke reserviert
save_edup=Der Benutzername '$1' wird bereits verwendet
save_eoverlay=Ein Theme-Overlay kann nur ausgewählt werden, wenn ein Theme vorhanden ist
save_edeny=Sie können sich selbst keinen Zugriff auf das Webmin Users-Modul verweigern
save_eos=Die Option "Gleich wie Unix" für Passwörter wird von Ihrem Betriebssystem nicht unterstützt.
save_emd5=Die Option "Gleich wie Unix" für Passwörter kann auf Systemen mit MD5-Verschlüsselung nicht verwendet werden
save_eunix=Der Unix-Benutzer '$1' existiert nicht
save_emod=Sie können keinen Zugriff auf das Modul '$1' gewähren
save_ecreate=Sie dürfen keine Benutzer erstellen
save_euser=Sie dürfen diesen Benutzer nicht bearbeiten
save_ecolon=Passwörter dürfen nicht das : Zeichen enthalten
save_epass=Passwort ist nicht gültig: $1
save_err=Speichern des:der Benutzer:in fehlgeschlagen
save_ename='$1' ist kein gültiger Benutzer:innenname
save_eunixname=Der Benutzer:innenname '$1' ist kein Unix-Benutzer:in und kann daher nicht im sicheren Modus verwendet werden
save_enamewebmin=Der Benutzer:innenname 'webmin' ist für interne Zwecke reserviert
save_edup=Der Benutzer:innenname '$1' wird bereits verwendet
save_eoverlay=Ein Theme-Overlay kann nur ausgewählt werden, wenn auch ein Theme festgelegt wurde
save_edeny=Sie können sich selbst keinen Zugriff auf das Modul „Webmin-Benutzer:innen“ verweigern
save_eos=Die Option Gleich wie Unix“-Passwort wird von Ihrem Betriebssystem nicht unterstützt
save_emd5=Die Option Gleich wie Unix“-Passwort kann auf Systemen mit MD5-Verschlüsselung nicht verwendet werden
save_eunix=Der Unix-Benutzer:in '$1' existiert nicht
save_emod=Zugriff auf Modul '$1' kann nicht gewährt werden
save_ecreate=Sie dürfen keine Benutzer:innen erstellen
save_euser=Sie dürfen diesen:die Benutzer:in nicht bearbeiten
save_ecolon=Passwörter dürfen das Zeichen „:“ nicht enthalten
save_epass=Passwort ist ungültig : $1
save_eself=Ihre aktuelle IP-Adresse ($1) würde abgelehnt
save_epam=PAM-Authentifizierung ist nicht verfügbar, da das Perl-Modul <tt>Authen::PAM</tt> entweder nicht installiert oder nicht richtig funktioniert.
save_epam2=Sie können das Perl-Module-Modul von Webmin verwenden, um <a href='$1'>Authen::PAM herunterzuladen und zu installieren</a>.
save_egroup=Sie dürfen nicht der Gruppe zuweisen
save_epam=PAM-Authentifizierung ist nicht verfügbar, da das Perl-Modul <tt>Authen::PAM</tt> nicht installiert oder nicht korrekt funktioniert
save_epam2=Sie können das Perl-Modul <tt>Authen::PAM</tt> jetzt über das Webmin-Modul „Perl-Module“ <a href='$1'>herunterladen und installieren</a>
save_egroup=Sie dürfen diese Gruppe nicht zuweisen
save_enone=Keine Adressen eingegeben
save_enet='$1' ist keine gültige Netzwerkadresse
save_emask='$1' ist keine gültige Netzmaske
save_eip='$1' ist keine vollständige IP- oder Netzwerkadresse
save_ehost=Fehler beim Finden der IP-Adresse für '$1'
save_elogouttime=Fehlende oder nicht-numerische Abmeldezeit bei Inaktivität
save_eminsize=Fehlende oder nicht-numerische minimale Passwortlänge
save_edays=Keine Tage ausgewählt
save_ehours=Fehlende oder ungültige Zeiten
save_ehost=IP-Adresse für '$1' konnte nicht ermittelt werden
save_elogouttime=Fehlende oder ungültige Inaktivitäts-Logout-Zeit
save_eminsize=Fehlende oder ungültige minimale Passwortlänge
save_edays=Keine erlaubten Tage ausgewählt
save_ehours=Fehlende oder ungültige erlaubte Zeiten
save_ehours2=Startzeit muss vor Endzeit liegen
save_etemp=Die Option, das Passwort beim nächsten Login zu ändern, kann nur verwendet werden, wenn <a href='$1'>Benutzer aufgefordert werden, neue Passwörter einzugeben</a> aktiviert ist
save_etemp=Die Option zur Erzwingung des Passwortwechsels beim nächsten Login kann nicht verwendet werden, solange die <a href='$1'>Eingabeaufforderung für neue Passwörter</a> nicht aktiviert ist
save_eemail=E-Mail-Adresse darf das Zeichen „:“ nicht enthalten
delete_err=Fehler beim Löschen des Benutzers
delete_err=Benutzer:in konnte nicht gelöscht werden
delete_eself=Sie können sich nicht selbst löschen
delete_ecannot=Sie dürfen keine Benutzer löschen
delete_euser=Sie dürfen diesen Benutzer nicht löschen
delete_eanonuser=Dieser Benutzer wird für den anonymen Modulzugriff verwendet
delete_ecannot=Sie dürfen keine Benutzer:innen löschen
delete_euser=Sie dürfen diesen:die Benutzer:in nicht löschen
delete_eanonuser=Dieser Benutzer:in wird für den anonymen Modulzugriff verwendet
cert_title=Zertifikat anfordern
cert_issue=Zertifikat ausstellen
cert_header=Details des neuen Zertifikats
cert_msg=Dieses Formular ermöglicht Ihnen die Anforderung eines SSL-Client-Zertifikats, das in Zukunft verwendet wird, um Ihnen Zugang zu Webmin zu gewähren, anstelle Ihres Benutzernamens und Passworts. Dies ist sicherer, aber da die Authentifizierung automatisch erfolgt, können Sie beim Verwenden des Zertifikats nicht zu einem anderen Benutzer wechseln.
cert_ebrowser=Webmin weiß nicht, wie man Client-Zertifikate für Ihren Browser ( $1 ) ausstellt
cert_msg=Mit diesem Formular können Sie ein SSL-Client-Zertifikat anfordern, das künftig für den Zugang zu Webmin anstelle von Benutzer:innenname und Passwort verwendet wird. Dies ist sicherer, aber da die Authentifizierung automatisch erfolgt, können Sie bei Verwendung des Zertifikats nicht zu einem anderen Benutzer:in wechseln.
cert_ebrowser=Webmin weiß nicht, wie Client-Zertifikate für Ihren Browser ($1) ausgestellt werden können
cert_cn=Ihr Name
cert_email=E-Mail-Adresse
cert_ou=Abteilung
cert_o=Organisation
cert_sp=Bundesland
cert_c=Ländercode
cert_key=Schlüssellänge
cert_key=Schlüsselgröße
cert_done=Ihr Zertifikat für $1 wurde erfolgreich erstellt.
cert_pickup=<a href='$1'>Klicken Sie hier, um Ihr Zertifikat abzuholen und in Ihrem Browser zu installieren</a>
cert_install=Installieren Sie Ihr Zertifikat im Browser
cert_ekey=Ein neuer SSL-Schlüssel wurde von Ihrem Browser nicht übermittelt - möglicherweise unterstützt er keine SSL-Client-Zertifikate.
cert_eca=Fehler beim Einrichten der Zertifizierungsstelle: $1
cert_already=Warnung - Sie verwenden bereits das Zertifikat $1.
cert_etempdir=Ungültige Zertifikatsdatei
cert_pickup=<a href='$1'>Hier klicken, um Ihr Zertifikat abzuholen und im Browser zu installieren</a>
cert_install=Zertifikat in Browser installieren
cert_ekey=Ihr Browser hat keinen neuen SSL-Schlüssel übermittelt möglicherweise unterstützt er keine SSL-Client-Zertifikate
cert_eca=Zertifizierungsstelle konnte nicht eingerichtet werden : $1
cert_already=Warnung Sie verwenden bereits das Zertifikat $1.
cert_etempdir=Ungültige Zertifikatdatei
acl_title=Modul-Zugriffskontrolle
acl_title2=Für $1 in $2
acl_title3=Für Gruppe $1 in $2
acl_options=Zugriffskontrolloptionen für $1
acl_config=Kann die Modulkonfiguration bearbeiten?
acl_reset=Auf Vollzugriff zurücksetzen
acl_rbac=Zugriffskontrolleinstellungen von RBAC übernehmen?
acl_rbacyes=Ja (überschreibt die untenstehenden Einstellungen)
acl_options=$1-Zugriffsoptionen
acl_config=Kann Modulkonfiguration bearbeiten?
acl_reset=Auf vollen Zugriff zurücksetzen
acl_rbac=Zugriffssteuerungseinstellungen aus RBAC übernehmen?
acl_rbacyes=Ja (überschreibt untenstehende Einstellungen)
acl_uall=Alle Benutzer
acl_uthis=Dieser Benutzer
acl_usel=Ausgewählte Benutzer ..
acl_uall=Alle Benutzer:innen
acl_uthis=Diese:r Benutzer:in
acl_usel=Ausgewählte Benutzer:innen ..
acl_gr=Mitglieder von $1
acl_users=Benutzer, die bearbeitet werden können
acl_users=Bearbeitbare Benutzer:innen
acl_mods=Kann Zugriff gewähren auf
acl_all=Alle Module
acl_own=Nur eigene Module
acl_sel=Ausgewählte Module ..
acl_create=Kann neue Benutzer erstellen?
acl_delete=Kann Benutzer löschen?
acl_rename=Kann Benutzer umbenennen?
acl_create=Kann neue Benutzer:innen erstellen?
acl_delete=Kann Benutzer:innen löschen?
acl_rename=Kann Benutzer:innen umbenennen?
acl_acl=Kann Modul-Zugriffskontrolle bearbeiten?
acl_lang=Kann Sprache ändern?
acl_locale=Kann Regionaleinstellungen ändern?
acl_locale=Kann Gebietsschema ändern?
acl_chcert=Kann SSL-Zertifikatsnamen ändern?
acl_euser=Sie dürfen die ACL für diesen Benutzer nicht bearbeiten
acl_egroup=Sie dürfen die Gruppen-ACLs nicht bearbeiten
acl_emod=Sie dürfen die ACL für dieses Modul nicht bearbeiten
acl_euser=Sie dürfen die ACL dieses:dieser Benutzer:in nicht bearbeiten
acl_egroup=Sie dürfen keine Gruppen-ACLs bearbeiten
acl_emod=Sie dürfen die ACL dieses Moduls nicht bearbeiten
acl_others=Kann nicht zugängliche Module sehen?
acl_cert=Kann Zertifikate anfordern?
acl_err=Fehler beim Speichern der Zugriffskontrolle
acl_err=Speichern der Zugriffskontrolle fehlgeschlagen
acl_groups=Kann Gruppen bearbeiten?
acl_gassign=Kann Benutzer Gruppen zuweisen
acl_gassign=Kann Benutzer:innen Gruppen zuweisen
acl_gall=Alle Gruppen
acl_gsel=Ausgewählt ..
acl_gsel=Ausgewählte ..
acl_gnone=Keine
acl_perms=Neu erstellte Benutzer erhalten
acl_perms_1=Gleiche Modul-Zugriffskontrolle wie Ersteller
acl_perms_0=Standard (uneingeschränkte) Modul-Zugriffskontrolle
acl_sync=Kann Benutzersynchronisierung konfigurieren?
acl_perms=Neu erstellte Benutzer:innen erhalten
acl_perms_1=Gleiche Modul-ACL wie Ersteller:in
acl_perms_0=Standard (unbeschränkte) Modul-ACL
acl_sync=Kann Benutzersynchronisation konfigurieren?
acl_unix=Kann Unix-Authentifizierung konfigurieren?
acl_sessions=Kann Anmeldesitzungen anzeigen und abbrechen?
acl_cats=Kann Kategorisierung ändern?
acl_theme=Kann persönliches Theme ändern?
acl_ips=Kann IP-Zugriffskontrolle ändern?
acl_switch=Kann zu anderen Benutzern wechseln?
acl_switch=Kann zu anderen Benutzer:innen wechseln?
acl_times=Kann erlaubte Anmeldezeiten ändern?
acl_pass=Kann Passwortbeschränkungen ändern?
acl_sql=Kann Benutzer- und Gruppendatenbank konfigurieren?
acl_sql=Kann Benutzer:innen- und Gruppendatenbank konfigurieren?
log_modify=Webmin-Benutzer $1 geändert
log_rename=Webmin-Benutzer $1 in $2 umbenannt
log_create=Webmin-Benutzer $1 erstellt
log_clone=Webmin-Benutzer $1 nach $2 kopiert
log_delete=Webmin-Benutzer $1 gelöscht
log_modify=Webmin-Benutzer:in $1 bearbeitet
log_rename=Webmin-Benutzer:in $1 in $2 umbenannt
log_create=Webmin-Benutzer:in $1 erstellt
log_clone=Webmin-Benutzer:in $1 zu $2 geklont
log_delete=Webmin-Benutzer:in $1 gelöscht
log_acl=Zugriff für $1 in $2 aktualisiert
log_reset=Zugriff für $1 in $2 zurückgesetzt
log_cert=Zertifikat für Benutzer $1 ausgestellt
log_modify_g=Webmin-Gruppe $1 geändert
log_cert=Zertifikat für Benutzer:in $1 ausgestellt
log_modify_g=Webmin-Gruppe $1 bearbeitet
log_rename_g=Webmin-Gruppe $1 in $2 umbenannt
log_create_g=Webmin-Gruppe $1 erstellt
log_delete_g=Webmin-Gruppe $1 gelöscht
log_switch=Zu Webmin-Benutzer $1 gewechselt
log_delete_users=$1 Webmin-Benutzer gelöscht
log_switch=Zu Webmin-Benutzer:in $1 gewechselt
log_delete_users=$1 Webmin-Benutzer:innen gelöscht
log_delete_groups=$1 Webmin-Gruppen gelöscht
log_joingroup=$1 Webmin-Benutzer zur Gruppe $2 hinzugefügt
log_joingroup=$1 Webmin-Benutzer:innen zur Gruppe $2 hinzugefügt
log_pass=Passwortbeschränkungen geändert
log_unix=Unix-Authentifizierung geändert
log_sync=Unix-Benutzersynchronisierung geändert
log_sql=Benutzer- und Gruppendatenbank geändert
log_twofactor=Benutzer $1 bei Zwei-Faktor-Anbieter $2 registriert
log_onefactor=Benutzer $1 von Zwei-Faktor-Authentifizierung abgemeldet
log_unix=Unix-Benutzerauthentifizierung geändert
log_sync=Unix-Benutzersynchronisation geändert
log_sql=Benutzer:innen- und Gruppendatenbank geändert
log_twofactor=Benutzer:in $1 bei Zwei-Faktor-Anbieter:in $2 registriert
log_onefactor=Zwei-Faktor-Authentifizierung für Benutzer:in $1 deaktiviert
log_forgot_send=E-Mail zum Zurücksetzen des Passworts für Benutzer:in $1 an $2 gesendet
log_forgot_reset=Passwort für Benutzer:in $1 mit E-Mail $2 zurückgesetzt
log_forgot_admin=Administrator:in hat E-Mail zum Zurücksetzen des Passworts für Benutzer:in $1 an $2 gesendet
gedit_ecannot=Sie dürfen Gruppen nicht bearbeiten
gedit_ecannot=Sie dürfen keine Gruppen bearbeiten
gedit_title=Webmin-Gruppe bearbeiten
gedit_title2=Webmin-Gruppe erstellen
gedit_group=Gruppenname
gedit_rights=Webmin-Gruppen-Zugriffsrechte
gedit_rights=Zugriffsrechte der Webmin-Gruppe
gedit_modules=Module der Mitglieder
gedit_members=Mitgliedsbenutzer und -gruppen
gedit_members=Mitglieds-Benutzer:innen und -Gruppen
gedit_desc=Gruppenbeschreibung
gedit_egone=Ausgewählte Gruppe existiert nicht mehr!
gdelete_err=Fehler beim Löschen der Gruppe
gdelete_ecannot=Sie dürfen Gruppen nicht löschen
gdelete_err=Gruppe konnte nicht gelöscht werden
gdelete_ecannot=Sie dürfen keine Gruppen löschen
gdelete_euser=Sie können Ihre eigene Gruppe nicht löschen
gdelete_esub=Gruppen mit Untergruppen können nicht gelöscht werden
gdelete_title=Gruppe löschen
gdelete_desc=Wollen Sie die Gruppe $1 und ihre Mitgliedsbenutzer $2 wirklich löschen?
gdelete_desc=Möchten Sie die Gruppe $1 und ihre Mitglieds-Benutzer:innen $2 wirklich löschen?
gdelete_ok=Gruppe löschen
gsave_err=Fehler beim Speichern der Gruppe
gsave_err=Gruppe konnte nicht gespeichert werden
gsave_ename=Fehlender oder ungültiger Gruppenname
gsave_enamewebmin=Der Gruppenname 'webmin' ist für die interne Nutzung reserviert
gsave_enamewebmin=Der Gruppenname 'webmin' ist für interne Zwecke reserviert
gsave_edup=Gruppenname wird bereits verwendet
gsave_edesc=Ungültige Beschreibung - das Zeichen : ist nicht erlaubt
gsave_edesc=Ungültige Beschreibung das Zeichen ":" ist nicht erlaubt
convert_title=Benutzer konvertieren
convert_ecannot=Sie dürfen Unix-Benutzer nicht konvertieren
convert_nogroups=Auf Ihrem System sind keine Webmin-Gruppen definiert. Es muss mindestens eine Gruppe erstellt werden, bevor eine Konvertierung erfolgt, um Berechtigungen für die konvertierten Benutzer zu definieren.
convert_desc=Mit diesem Formular können Sie vorhandene Unix-Benutzer in Webmin-Benutzer konvertieren. Die Berechtigungen jedes neuen Webmin-Benutzers werden durch die unten ausgewählte Gruppe bestimmt.
convert_0=Alle Benutzer
convert_1=Nur Benutzer
convert_2=Alle außer Benutzern
convert_3=Benutzer mit Gruppe
convert_4=Benutzer mit UIDs im Bereich
convert_group=Neuen Benutzern Webmin-Gruppe zuweisen
convert_sync2=Passwort zukünftig mit Unix-Benutzer synchronisieren?
convert_title=Benutzer:innen konvertieren
convert_ecannot=Sie dürfen keine Unix-Benutzer:innen konvertieren
convert_nogroups=Auf Ihrem System wurden keine Webmin-Gruppen definiert. Mindestens eine Gruppe muss erstellt werden, bevor Benutzer:innen konvertiert werden können, um die Berechtigungen festzulegen.
convert_desc=Mit diesem Formular können bestehende Unix-Benutzer:innen in Webmin-Benutzer:innen konvertiert werden. Die Berechtigungen jedes neuen Webmin-Benutzers:in werden durch die unten ausgewählte Gruppe bestimmt.
convert_0=Alle Benutzer:innen
convert_1=Nur Benutzer:innen
convert_2=Alle außer Benutzer:innen
convert_3=Benutzer:innen mit Gruppe
convert_4=Benutzer:innen mit UIDs im Bereich
convert_group=Neuen Benutzer:innen Webmin-Gruppe zuweisen
convert_sync2=Passwort künftig mit Unix-Benutzer:in synchronisieren?
convert_ok=Jetzt konvertieren
convert_err=Fehler bei der Konvertierung der Benutzer
convert_eusers=Keine Benutzer zur Konvertierung eingegeben
convert_err=Benutzer:innen konnten nicht konvertiert werden
convert_eusers=Keine zu konvertierenden Benutzer:innen eingegeben
convert_egroup=Unix-Gruppe existiert nicht
convert_emin=Ungültige minimale UID
convert_emax=Ungültige maximale UID
convert_ewgroup=Keine solche Webmin-Gruppe
convert_ewgroup2=Sie dürfen keine neuen Benutzer dieser Gruppe zuweisen
convert_ewgroup2=Sie dürfen neuen Benutzer:innen diese Gruppe nicht zuweisen
convert_skip=$1 wird übersprungen
convert_exists=$1 existiert bereits
convert_invalid=$1 ist kein gültiger Webmin-Benutzername
convert_invalid=$1 ist kein gültiger Webmin-Benutzer:innenname
convert_added=$1 wird hinzugefügt
convert_msg=Konvertiere Unix-Benutzer...
convert_user=Unix-Benutzer
convert_action=Durchgeführte Aktion
convert_done=$1 Benutzer konvertiert, $2 ungültig, $3 bereits vorhanden, $4 ausgeschlossen.
convert_users=Zu konvertierende Benutzer
convert_msg=Konvertiere Unix-Benutzer:innen …
convert_user=Unix-Benutzer:in
convert_action=Ausgeführte Aktion
convert_done=$1 Benutzer:innen konvertiert, $2 ungültig, $3 bereits vorhanden, $4 ausgeschlossen.
convert_users=Zu konvertierende Benutzer:innen
sync_title=Unix-Benutzersynchronisierung
sync_desc=Mit diesem Formular können Sie die automatische Synchronisierung von Unix-Benutzern, die über Webmin erstellt wurden, und Benutzern in diesem Modul konfigurieren.
sync_nogroups=Auf Ihrem System sind keine Webmin-Gruppen definiert. Es muss mindestens eine Gruppe erstellt werden, um den Zugriff für erstellte Benutzer festzulegen.
sync_title=Synchronisation von Unix-Benutzer:innen
sync_desc=Mit diesem Formular können Sie die automatische Synchronisation von über Webmin erstellten Unix-Benutzer:innen und Benutzer:innen in diesem Modul konfigurieren.
sync_nogroups=Auf Ihrem System wurden keine Webmin-Gruppen definiert. Es muss mindestens eine Gruppe erstellt werden, um die Zugriffsrechte für erstellte Benutzer:innen festzulegen.
sync_when=Wann synchronisieren
sync_create=Erstelle einen Webmin-Benutzer, wenn ein Unix-Benutzer erstellt wird.
sync_update=Aktualisiere den entsprechenden Webmin-Benutzer, wenn ein Unix-Benutzer aktualisiert wird.
sync_delete=Lösche den entsprechenden Webmin-Benutzer, wenn ein Unix-Benutzer gelöscht wird.
sync_modify=Ändere den Namen des entsprechenden Webmin-Benutzers, wenn ein Unix-Benutzer umbenannt wird.
sync_group=Neuen Benutzern Webmin-Gruppe zuweisen
sync_unix=Passwort neuer Benutzer auf Unix-Authentifizierung setzen.
sync_ecannot=Sie dürfen die Benutzersynchronisierung nicht konfigurieren.
sync_create=Webmin-Benutzer:in erstellen, wenn ein Unix-Benutzer:in erstellt wird.
sync_update=Den zugehörigen Webmin-Benutzer:in aktualisieren, wenn ein Unix-Benutzer:in aktualisiert wird.
sync_delete=Den zugehörigen Webmin-Benutzer:in löschen, wenn ein Unix-Benutzer:in gelöscht wird.
sync_modify=Den zugehörigen Webmin-Benutzer:in umbenennen, wenn ein Unix-Benutzer:in umbenannt wird.
sync_group=Neuen Benutzer:innen Webmin-Gruppe zuweisen
sync_unix=Passwort für neue Benutzer:innen auf Unix-Authentifizierung setzen.
sync_ecannot=Sie dürfen keine Benutzersynchronisation konfigurieren.
unix_title=Unix-Benutzerauthentifizierung
unix_err=Fehler beim Speichern der Unix-Authentifizierung
unix_desc=Diese Seite ermöglicht es Ihnen, Webmin so zu konfigurieren, dass Anmeldeversuche gegen die Systembenutzerliste und PAM überprüft werden. Dies kann nützlich sein, wenn Sie eine große Anzahl von vorhandenen Unix-Benutzern haben, denen Sie Zugriff auf Webmin gewähren möchten.
unix_def=Nur Webmin-Benutzer dürfen sich anmelden
unix_sel=Erlaube den folgenden Unix-Benutzern die Anmeldung ..
unix_err=Speichern der Unix-Authentifizierung fehlgeschlagen
unix_desc=Auf dieser Seite können Sie Webmin so konfigurieren, dass Anmeldeversuche gegen die Systembenutzer:innenliste und PAM validiert werden. Dies ist nützlich, wenn Sie vielen bestehenden Unix-Benutzer:innen Zugriff auf Webmin gewähren möchten.
unix_def=Nur Webmin-Benutzer:innen dürfen sich anmelden
unix_sel=Folgenden Unix-Benutzer:innen Anmeldung erlauben ..
unix_mode=Erlauben
unix_mall=Alle Benutzer
unix_mall=Alle Benutzer:innen
unix_group=Mitglieder der Gruppe ..
unix_user=Unix-Benutzer ..
unix_who=Benutzer oder Gruppe
unix_to=Als Webmin-Benutzer
unix_ecannot=Sie dürfen die Unix-Benutzerauthentifizierung nicht konfigurieren
unix_epam=Unix-Authentifizierung ist nicht verfügbar, da das Perl-Modul <tt>Authen::PAM</tt> nicht installiert oder nicht ordnungsgemäß funktioniert.
unix_all=Alle Unix-Benutzer erlauben
unix_allow=Nur gelisteten Unix-Benutzern erlauben
unix_deny=Gelisteten Unix-Benutzern verweigern
unix_none=Keine Benutzer eingegeben
unix_euser='$1' ist kein gültiger Benutzername
unix_user=Unix-Benutzer:in ..
unix_who=Benutzer:in oder Gruppe
unix_to=Als Webmin-Benutzer:in
unix_ecannot=Sie dürfen die Unix-Authentifizierung nicht konfigurieren
unix_epam=Unix-Authentifizierung ist nicht verfügbar, da das Perl-Modul <tt>Authen::PAM</tt> nicht installiert oder nicht korrekt funktioniert.
unix_all=Allen Unix-Benutzer:innen Zugang erlauben
unix_allow=Nur gelisteten Unix-Benutzer:innen Zugang erlauben
unix_deny=Gelisteten Unix-Benutzer:innen Zugang verweigern
unix_none=Keine Benutzer:innen eingegeben
unix_euser='$1' ist kein gültiger Benutzer:innenname
unix_egroup='$1' ist kein gültiger Gruppenname
unix_shells=Unix-Benutzern deren Shells nicht in der Datei enthalten sind verweigern
unix_shells=Unix-Benutzer:innen mit nicht gelisteten Shells den Zugang verweigern
unix_eshells=Fehlende oder nicht vorhandene Shells-Datei
unix_restrict2=Zusätzliche Einschränkungen
unix_ewhogroup=Fehlende Gruppe zum Erlauben in Zeile $1
unix_ewhouser=Fehlender Benutzer zum Erlauben in Zeile $1
unix_enone=Keine Unix-Benutzer oder -Gruppen zum Erlauben eingegeben
unix_same=&lt;Gleicher Benutzer oder Gruppe&gt;
unix_sudo=Benutzern, die alle Befehle über <tt>sudo</tt> ausführen können, die Anmeldung als <tt>root</tt> erlauben
unix_pamany=Behandle Anmeldungen, die nur die PAM-Überprüfung bestehen, als $1
unix_esudo=Der $1-Befehl ist nicht installiert
unix_esudomod=Das benötigte Perl-Modul $1 für die <tt>sudo</tt>-Authentifizierung ist nicht installiert
unix_header=Einstellungen zur Unix-Benutzerauthentifizierung
unix_utable=Erlaubte Unix-Benutzer
unix_ewhogroup=Fehlende Gruppe in Zeile $1
unix_ewhouser=Fehlender Benutzer:in in Zeile $1
unix_enone=Keine Unix-Benutzer:innen oder Gruppen zur Erlaubnis eingegeben
unix_same=&lt;Gleiche:r Benutzer:in oder Gruppe&gt;
unix_sudo=Benutzer:innen, die über <tt>sudo</tt> alle Befehle ausführen dürfen, erlauben sich als <tt>root</tt> anzumelden
unix_pamany=Anmeldungen, die nur PAM bestehen, als $1 behandeln
unix_esudo=Der Befehl $1 ist nicht installiert
unix_esudomod=Das Perl-Modul $1, das für die <tt>sudo</tt>-Authentifizierung benötigt wird, ist nicht installiert
unix_header=Einstellungen r Unix-Benutzerauthentifizierung
unix_utable=Erlaubte Unix-Benutzer:innen
sessions_title=Aktuelle Anmelde-Sitzungen
sessions_title=Aktuelle Anmeldesitzungen
sessions_id=Sitzungs-ID
sessions_user=Webmin-Benutzer
sessions_login=Zuletzt aktiv um
sessions_user=Webmin-Benutzer:in
sessions_login=Zuletzt aktiv am
sessions_host=IP-Adresse
sessions_lview=Protokolle anzeigen ..
sessions_actions=Aktionen ..
sessions_all=Alle Sitzungen ..
sessions_logouts=Auch abgemeldete Sitzungen anzeigen ..
sessions_state=Zustand
sessions_lview=Protokolle anzeigen..
sessions_actions=Aktionen..
sessions_all=Alle Sitzungen..
sessions_logouts=Auch abgemeldete Sitzungen anzeigen..
sessions_state=Status
sessions_action=Aktionen
sessions_this=Diese Anmeldung
sessions_in=Angemeldet
sessions_out=Abgemeldet
sessions_kill=Trennen ..
sessions_kill=Verbindung trennen..
logins_title=Kürzliche Webmin-Anmeldungen
logins_title=Letzte Webmin-Anmeldungen
hide_title=Nicht verwendete Module ausblenden
hide_desc=Die folgenden Module werden aus der Modulliste für $1 entfernt, da die entsprechenden Server auf Ihrem System nicht installiert sind ..
hide_desc=Folgende Module werden aus der Modulliste für $1 entfernt, da deren zugehörige Server auf Ihrem System nicht installiert sind ..
hide_ok=Module jetzt ausblenden
hide_none=Nichts auszublenden - $1 hat keinen Zugriff auf Module, deren entsprechende Server auf Ihrem System nicht installiert sind.
hide_desc2=Bitte beachten Sie, dass diese Module nicht automatisch wieder erscheinen, wenn die entsprechenden Server installiert werden. Sie müssen den Zugriff manuell über dieses Modul gewähren.
hide_clone=(Klonen $1)
hide_none=Nichts auszublenden $1 hat keinen Zugriff auf Module, deren Server nicht installiert sind.
hide_desc2=Beachten Sie, dass diese Module nicht automatisch wieder angezeigt werden, wenn die zugehörigen Server installiert werden. Der Zugriff muss manuell über dieses Modul gewährt werden.
hide_clone=(Klon von $1)
switch_euser=Sie dürfen nicht zu diesem Benutzer wechseln
switch_eold=Bestehende Sitzung nicht gefunden!
switch_euser=Sie dürfen nicht zu diesem:r Benutzer:in wechseln
switch_eold=Vorhandene Sitzung nicht gefunden!
rbac_title=RBAC einrichten
rbac_desc=Die RBAC-Integration von Webmin bietet eine Möglichkeit, die Berechtigungen für Benutzer-Module und ACLs aus einer RBAC (Role Based Access Control)-Datenbank zu bestimmen, anstatt aus den eigenen Konfigurationsdateien von Webmin. Sobald die RBAC-Unterstützung aktiviert ist, werden die Fähigkeiten eines Benutzers, für den die Option <b>RBAC steuert alle Module und ACLs</b> ausgewählt ist, von RBAC und nicht von den eigenen Zugriffskontroll-Einstellungen von Webmin bestimmt.
rbac_esolaris=RBAC wird derzeit nur auf Solaris unterstützt und kann daher auf diesem $1-System nicht verwendet werden.
rbac_eperl=Das Perl-Modul $1, das für die RBAC-Integration benötigt wird, ist nicht installiert. <a href='$2'>Klicken Sie hier</a>, um es jetzt installieren zu lassen.
rbac_ecpan=Sie haben keinen Zugriff auf die Webmin Perl-Module-Seite, um das notwendige $1-Modul für die RBAC-Integration zu installieren.
rbac_ok=Die RBAC-Integration ist auf diesem System verfügbar und kann auf der Seite "Webmin-Benutzer bearbeiten" pro Benutzer aktiviert werden.
rbac_desc=Die RBAC-Integration von Webmin bietet eine Möglichkeit, Modul- und ACL-Berechtigungen für Benutzer:innen aus einer RBAC-Datenbank (Role Based Access Control) statt aus Webmins eigenen Konfigurationsdateien abzuleiten. Sobald RBAC aktiviert ist, werden alle Berechtigungen für Benutzer:innen mit der Option <b>RBAC steuert alle Module und ACLs</b> über RBAC verwaltet.
rbac_esolaris=RBAC wird derzeit nur unter Solaris unterstützt und kann daher auf diesem $1-System nicht verwendet werden.
rbac_eperl=Das für die RBAC-Integration benötigte Perl-Modul $1 ist nicht installiert. <a href='$2'>Hier klicken</a>, um es jetzt zu installieren.
rbac_ecpan=Sie haben keinen Zugriff auf die Seite „Perl-Module, um das erforderliche Modul $1 für die RBAC-Integration zu installieren.
rbac_ok=RBAC-Integration ist auf diesem System verfügbar und kann auf der Seite Webmin-Benutzer:in bearbeiten“ benutzerspezifisch aktiviert werden.
udeletes_err=Fehler beim Löschen der Benutzer
udeletes_jerr=Fehler beim Hinzufügen von Benutzern zur Gruppe
udeletes_err=Benutzer:innen konnten nicht gelöscht werden
udeletes_jerr=Benutzer:innen konnten nicht zur Gruppe hinzugefügt werden
udeletes_enone=Keine ausgewählt
udeletes_title=Benutzer löschen
udeletes_rusure=Sind Sie sicher, dass Sie die $1 ausgewählten Benutzer löschen möchten? Alle ihre Zugriffskontrolleinstellungen und Benutzerdaten gehen verloren.
udeletes_users=Ausgewählte Benutzer: $1
udeletes_ok=Benutzer löschen
udeletes_ereadonly=Einer der ausgewählten Benutzer ist als nicht bearbeitbar markiert
udeletes_title=Benutzer:innen löschen
udeletes_rusure=Möchten Sie die $1 ausgewählten Benutzer:innen wirklich löschen? Alle deren Zugriffseinstellungen und Benutzerdetails gehen dabei verloren.
udeletes_users=Ausgewählte Benutzer:innen: $1
udeletes_ok=Benutzer:innen löschen
udeletes_ereadonly=Einer der ausgewählten Benutzer:innen ist als nicht bearbeitbar markiert
gdeletes_err=Fehler beim Löschen der Gruppen
gdeletes_err=Gruppen konnten nicht gelöscht werden
gdeletes_title=Gruppen löschen
gdeletes_rusure=Sind Sie sicher, dass Sie die $1 ausgewählten Gruppen und die $2 Benutzer, die sie enthalten, löschen möchten? Alle ihre Zugriffskontrolleinstellungen und Benutzerdaten gehen verloren.
gdeletes_rusure=Möchten Sie die $1 ausgewählten Gruppen und die darin enthaltenen $2 Benutzer:innen wirklich löschen? Alle Zugriffseinstellungen und Benutzerdetails gehen dabei verloren.
gdeletes_users=Ausgewählte Gruppen: $1
gdeletes_ok=Gruppen löschen
pass_title=Passwortrichtlinien
pass_ecannot=Sie dürfen die Passwortrichtlinien nicht bearbeiten
pass_header=Webmin Passwortdurchsetzungsoptionen
pass_title=Passwortbeschränkungen
pass_ecannot=Sie dürfen keine Passwortbeschränkungen bearbeiten
pass_header=Optionen zur Passwortdurchsetzung in Webmin
pass_minsize=Minimale Passwortlänge
pass_nominsize=Keine Mindestlänge
pass_regexps=Reguläre Ausdrücke, mit denen Passwörter übereinstimmen müssen
pass_regdesc=Beschreibung des regulären Ausdrucks für Menschen
pass_maxdays=Tage, bevor das Passwort geändert werden muss
pass_lockdays=Tage, bevor das unveränderte Passwort das Konto sperrt
pass_nominsize=Kein Minimum
pass_regexps=Reguläre Ausdrücke, die Passwörter erfüllen müssen
pass_regdesc=Lesbare Beschreibung für regulären Ausdruck
pass_maxdays=Tage, bis Passwort geändert werden muss
pass_lockdays=Tage, bis Konto bei unverändertem Passwort gesperrt wird
pass_nomaxdays=Änderung nie erforderlich
pass_nolockdays=Konto wird nie gesperrt
pass_nouser=Passwörter mit Benutzernamen verbieten?
pass_nodict=Passwörter aus Wörterbüchern verbieten?
pass_oldblock=Anzahl der alten Passwörter, die abgelehnt werden
pass_nooldblock=Keine Begrenzung der Passwortwiederverwendung
pass_nouser=Passwörter dürfen keinen Benutzernamen enthalten?
pass_nodict=Keine Wörterbuchwörter im Passwort erlaubt?
pass_oldblock=Anzahl vorheriger Passwörter, die abgelehnt werden
pass_nooldblock=Keine Beschränkung der Wiederverwendung
pass_days=Tage
pass_pass=Passwörter
pass_err=Fehler beim Speichern der Passwortrichtlinien
pass_eminsize=Fehlende oder nicht numerische Mindestpasswortlänge
pass_emaxdays=Fehlende oder nicht numerische Anzahl der Tage vor der Änderung
pass_elockdays=Fehlende oder nicht numerische Anzahl der Tage vor der Kontosperrung
pass_eoldblock=Fehlende oder nicht numerische Anzahl der alten Passwörter, die abgelehnt werden
pass_err=Speichern der Passwortbeschränkungen fehlgeschlagen
pass_eminsize=Fehlende oder ungültige minimale Passwortlänge
pass_emaxdays=Fehlende oder ungültige Anzahl Tage bis zur Änderung
pass_elockdays=Fehlende oder ungültige Anzahl Tage bis zur Sperrung
pass_eoldblock=Fehlende oder ungültige Anzahl alter Passwörter zur Ablehnung
cpass_minsize=Muss mindestens $1 Buchstaben lang sein
cpass_notre=Entspricht einem nicht erlaubten Muster
cpass_re=Entspricht nicht einem erforderlichen Muster
cpass_re=Entspricht keinem erforderlichen Muster
cpass_name=Enthält den Benutzernamen
cpass_dict=Ist ein Wörterbuchwort
cpass_spellcmd=Weder der $1- noch der $2-Befehl, der zur Überprüfung von Wörterbuchwörtern benötigt wird, ist installiert
cpass_old=Alte Passwörter können nicht wiederverwendet werden
cpass_spellcmd=Die Befehle $1 oder $2 zur Wörterbuchprüfung sind nicht installiert
cpass_old=Alte Passwörter dürfen nicht wiederverwendet werden
sql_title=Benutzer- und Gruppendatenbank
sql_ecannot=Sie dürfen die Benutzer- und Gruppendatenbank nicht konfigurieren
sql_header=Optionen für die Datenbank-Backend für Benutzer und Gruppen
sql_title=Benutzer:innen- und Gruppendatenbank
sql_ecannot=Sie dürfen die Benutzer:innen- und Gruppendatenbank nicht konfigurieren
sql_header=Optionen für Datenbank-Backend für Benutzer:innen und Gruppen
sql_host=Hostname
sql_user=Benutzername
sql_user=Benutzer:innenname
sql_pass=Passwort
sql_db=Datenbankname
sql_ssl=Verbindung Verschlüsselung
sql_ssl=Verbindungsverschlüsselung
sql_ssl0=Keine
sql_ssl1=SSL
sql_ssl2=TLS
sql_userclass=Objektklasse für Benutzer
sql_userclass=Objektklasse für Benutzer:innen
sql_groupclass=Objektklasse für Gruppen
sql_euserclass=Fehlende oder ungültige Objektklasse für Benutzer
sql_euserclass=Fehlende oder ungültige Objektklasse für Benutzer:innen
sql_egroupclass=Fehlende oder ungültige Objektklasse für Gruppen
sql_none=Nur lokale Dateien zur Speicherung von Benutzern und Gruppen verwenden
sql_none=Nur lokale Dateien zur Speicherung von Benutzer:innen und Gruppen verwenden
sql_mysql=MySQL-Datenbank verwenden
sql_postgresql=PostgreSQL-Datenbank verwenden
sql_ldap=LDAP-Server verwenden
sql_prefix=Erstellen unter DN
sql_addto0=Neue Benutzer zur oben ausgewählten Datenbank hinzufügen
sql_addto1=Neue Benutzer zu lokalen Dateien hinzufügen
sql_nocache0=Verbindungen zur Datenbank cachen
sql_nocache1=Für jede Abfrage eine neue Verbindung öffnen
sql_prefix=Unter DN erstellen
sql_addto0=Neue Benutzer:innen zur oben ausgewählten Datenbank hinzufügen
sql_addto1=Neue Benutzer:innen zu lokalen Dateien hinzufügen
sql_nocache0=Datenbankverbindungen zwischenspeichern
sql_nocache1=Für jede Abfrage neue Verbindung öffnen
sql_emod=Fehlendes erforderliches Perl-Modul <tt>$1</tt>
sql_etable=Fehler beim Abfragen der erforderlichen Tabelle $1 : $2
sql_eldapdn=Basis LDAP DN $1 wurde nicht gefunden
sql_eclass=LDAP-Objektklasse $1 existiert nicht im Schema des Servers
sql_err=Fehler beim Speichern der Benutzer- und Gruppendatenbank-Einstellungen
sql_etable=Abfrage der erforderlichen Tabelle $1 fehlgeschlagen : $2
sql_eldapdn=Basis-LDAP-DN $1 wurde nicht gefunden
sql_eclass=LDAP-Objektklasse $1 existiert nicht im Server-Schema
sql_err=Speichern der Datenbankeinstellungen für Benutzer:innen und Gruppen fehlgeschlagen
sql_ehost=Fehlender oder nicht auflösbarer Hostname
sql_euser=Fehlender oder ungültiger Benutzername (keine Leerzeichen erlaubt)
sql_euser=Fehlender oder ungültiger Benutzer:innenname (keine Leerzeichen erlaubt)
sql_epass=Ungültiges Passwort (keine Leerzeichen erlaubt)
sql_edb=Ungültiger Datenbankname (keine Leerzeichen erlaubt)
sql_eprefix=Fehlender oder ungültiger Basis-DN (keine Leerzeichen erlaubt)
sql_eprefix2=Ungültig aussehender Basis-DN - sollte wie <tt>dc=mydomain,dc=com</tt> aussehen
sql_eprefix2=Ungültig aussehender Basis-DN sollte z.B. <tt>dc=meinedomain,dc=com</tt> sein
sql_title2=Fehlende Tabellen erstellen
sql_tableerr=Benutzer- und Gruppendatenbankeinstellungen sind gültig, aber einige Tabellen, die von Webmin benötigt werden, fehlen: $1
sql_tableerr2=Klicken Sie auf die Schaltfläche <b>Tabellen erstellen</b>, um sie automatisch zu erstellen, oder führen Sie das SQL unten manuell aus.
sql_tableerr=Einstellungen der Benutzer:innen- und Gruppendatenbank sind gültig, aber einige für Webmin erforderliche Tabellen fehlen : $1
sql_tableerr2=Klicken Sie auf die Schaltfläche <b>Tabellen erstellen</b> unten, um sie automatisch zu erstellen, oder führen Sie das untenstehende SQL manuell aus.
sql_make=Tabellen erstellen
sql_title3=Fehlende DN erstellen
sql_dnerr=Benutzer- und Gruppendatenbankeinstellungen sind gültig, aber der LDAP-DN, den Webmin benötigt, fehlt: $1
sql_dnerr2=Klicken Sie auf die Schaltfläche <b>DN erstellen</b>, um ihn automatisch zu erstellen, oder fügen Sie ihn manuell zu Ihrem LDAP-Server hinzu.
sql_title3=Fehlenden DN erstellen
sql_dnerr=Einstellungen der Benutzer:innen- und Gruppendatenbank sind gültig, aber der für Webmin erforderliche LDAP-DN fehlt : $1
sql_dnerr2=Klicken Sie auf die Schaltfläche <b>DN erstellen</b> unten, um ihn automatisch zu erstellen, oder fügen Sie ihn manuell zu Ihrem LDAP-Server hinzu.
sql_makedn=DN erstellen
sql_schema=LDAP-Schema herunterladen
sql_timeout_def=Standardverbindungstimeout verwenden (60 Sekunden)
sql_timeout_for=Cache-Verbindungen nach
sql_timeout_secs=Sekunden schließen
sql_etimeout=Cache-Verbindungstimeout muss eine Zahl sein
sql_timeout_def=Standard-Timeout für Verbindungen verwenden (60 Sekunden)
sql_timeout_for=Zwischengespeicherte Verbindungen schließen nach
sql_timeout_secs=Sekunden
sql_etimeout=Timeout für zwischengespeicherte Verbindungen muss eine Zahl sein
make_title=Benutzer- und Gruppentabellen erstellen
make_err=Fehler beim Erstellen der Benutzer- und Gruppentabellen
make_exec=Führe SQL $1 aus ..
make_failed=.. Erstellung fehlgeschlagen : $1
make_title=Benutzer:innen- und Gruppentabellen erstellen
make_err=Erstellen der Benutzer:innen- und Gruppentabellen fehlgeschlagen
make_exec=SQL $1 wird ausgeführt ..
make_failed=.. Erstellen fehlgeschlagen : $1
make_done=.. abgeschlossen
make_still=Einige Probleme wurden auch nach der Tabellenerstellung gefunden: $1
make_still=Einige Probleme wurden auch nach dem Erstellen der Tabellen festgestellt : $1
makedn_title=LDAP DN erstellen
makedn_title=LDAP-DN erstellen
makedn_eoc=Keine strukturellen Objektklassen gefunden!
makedn_exec=Erstelle übergeordneten DN $1 ..
makedn_failed=.. Erstellung fehlgeschlagen : $1
makedn_exec=Eltern-DN $1 wird erstellt ..
makedn_failed=.. Erstellen fehlgeschlagen : $1
makedn_done=.. abgeschlossen
makedn_still=Einige Probleme wurden auch nach der DN-Erstellung gefunden: $1
makedn_still=Einige Probleme wurden auch nach dem Erstellen des DN festgestellt : $1
schema_title=LDAP-Schema herunterladen
schema_desc=Bevor Webmin einen LDAP-Server zur Speicherung von Benutzern und Gruppen verwenden kann, muss er konfiguriert werden, um das unten stehende Schema zu verwenden. Dies kann normalerweise erreicht werden, indem die Schema-Definition in <tt>/etc/ldap/schema</tt> oder <tt>/etc/openldap/schema</tt> als <tt>webmin.schema</tt> gespeichert wird, und dann den Server konfiguriert wird, um diese Schema-Datei zu laden.
schema_desc=Bevor Webmin einen LDAP-Server zur Speicherung von Benutzer:innen und Gruppen verwenden kann, muss er mit dem untenstehenden Schema konfiguriert werden. Das kann typischerweise durch Speichern der Schema-Definition in <tt>/etc/ldap/schema</tt> oder <tt>/etc/openldap/schema</tt> als <tt>webmin.schema</tt> erfolgen, gefolgt von der Konfiguration des Servers zur Verwendung dieser Datei.
schema_download=Schema-Datei herunterladen : <a href=$1>$1</a>
twofactor_err=Fehler beim Einrichten der Zwei-Faktor-Authentifizierung
twofactor_euser=Ihr Webmin-Benutzer wurde nicht gefunden!
twofactor_err=Zwei-Faktor-Authentifizierung konnte nicht eingerichtet werden
twofactor_euser=Ihr Webmin-Benutzer:in wurde nicht gefunden!
twofactor_title=Zwei-Faktor-Authentifizierung
twofactor_disable=Zwei-Faktor-Authentifizierung deaktivieren
twofactor_already=Ihre Webmin-Anmeldung hat bereits zwei-Faktor-Authentifizierung mit Anbieter $1 und Konten-ID $2 aktiviert.
twofactor_already2=Webmin-Anmeldung $3 hat bereits zwei-Faktor-Authentifizierung mit Anbieter $1 und Konten-ID $2 aktiviert.
twofactor_desc=Diese Seite ermöglicht es Ihnen, die Zwei-Faktor-Authentifizierung für Ihre Webmin-Anmeldung mit <a href='$2' target=_blank>$1</a> zu aktivieren. Sobald aktiviert, wird ein zusätzlicher Authentifizierungstoken erforderlich sein, um sich bei Webmin anzumelden.
twofactor_desc2=Diese Seite ermöglicht es Ihnen, die Zwei-Faktor-Authentifizierung für Webmin-Anmeldung $3 mit <a href='$2' target=_blank>$1</a> zu aktivieren. Sobald aktiviert, wird ein zusätzlicher Authentifizierungstoken erforderlich sein, um sich bei Webmin anzumelden.
twofactor_enable=Für Zwei-Faktor-Authentifizierung anmelden
twofactor_header=Details zur Zwei-Faktor-Authentifizierung
twofactor_enrolling=Anmeldung zur Zwei-Faktor-Authentifizierung mit Anbieter $1 ..
twofactor_failed=.. Anmeldung fehlgeschlagen : $1
twofactor_done=.. abgeschlossen. Ihre ID bei diesem Anbieter ist <tt>$1</tt>.
twofactor_setup=Die Zwei-Faktor-Authentifizierung wurde auf diesem System noch nicht aktiviert, kann aber über das <a href='$1'>Webmin-Konfigurations</a> Modul aktiviert werden.
twofactor_ebutton=Kein Button geklickt!
twofactor_already=Ihr Webmin-Login hat bereits Zwei-Faktor-Authentifizierung mit Anbieter:in $1 und Konto-ID $2 aktiviert.
twofactor_already2=Webmin-Login $3 hat bereits Zwei-Faktor-Authentifizierung mit Anbieter:in $1 und Konto-ID $2 aktiviert.
twofactor_desc=Auf dieser Seite können Sie die Zwei-Faktor-Authentifizierung für Ihr Webmin-Login mit <a href='$2' target=_blank>$1</a> aktivieren. Nach der Aktivierung ist beim Login ein zusätzlicher Authentifizierungscode erforderlich.
twofactor_desc2=Auf dieser Seite können Sie die Zwei-Faktor-Authentifizierung für das Webmin-Login $3 mit <a href='$2' target=_blank>$1</a> aktivieren. Nach der Aktivierung ist beim Login ein zusätzlicher Authentifizierungscode erforderlich.
twofactor_enable=Für Zwei-Faktor-Authentifizierung registrieren
twofactor_header=Details zur Zwei-Faktor-Registrierung
twofactor_enrolling=Registrierung r Zwei-Faktor-Authentifizierung bei Anbieter:in $1 läuft ..
twofactor_failed=.. Registrierung fehlgeschlagen : $1
twofactor_done=.. abgeschlossen. Ihre ID bei diesem Anbieter:in ist <tt>$1</tt>.
twofactor_setup=Zwei-Faktor-Authentifizierung ist auf diesem System noch nicht aktiviert, kann aber über das Modul <a href='$1'>Webmin-Konfiguration</a> eingeschaltet werden.
twofactor_ebutton=Keine Schaltfläche geklickt!
forgot_title=Link zum Zurücksetzen des Passworts senden
forgot_err=Link zum Zurücksetzen des Passworts konnte nicht gesendet werden
forgot_header=Details zum Link zum Zurücksetzen des Passworts
forgot_user=Passwort für Benutzer:in zurücksetzen
forgot_email=Zustellungsmethode für Link
forgot_email_def=Link in Webmin anzeigen
forgot_email_sel=Link per E-Mail senden an
forgot_send=Link senden
forgot_desc=Auf dieser Seite können Sie einen Link erzeugen oder versenden, mit dem ein:e Webmin-Benutzer:in ein neues Passwort festlegen kann. Seien Sie vorsichtig, an welche Adresse Sie diesen Link senden, da er vollständigen Zugriff auf das Webmin-Login gewährt!
forgot_adminmsg=Sie erhalten diese E-Mail vom Admin des Webmin-Systems unter $3 für das Login $1.\n\nWenn Sie das Passwort zurücksetzen möchten, folgen Sie diesem Link:\n$2
forgot_sending=Passwort-Zurücksetzungs-E-Mail für $2 an $1 wird gesendet ..
forgot_sent=.. gesendet
forgot_link=Der folgende Link kann verwendet werden, um das Webmin-Passwort für $1 in den nächsten $2 Minuten zurückzusetzen:
forgot_enosudo=Sudo ist auf diesem System nicht verfügbar!
forgot_ecansudo=Der eingegebene Benutzer:in hat keine Sudo-Rechte
forgot_eunix=Der eingegebene sudo-fähige Benutzer:in existiert nicht!

View File

@@ -36,6 +36,7 @@ edit_rights=Webmin user access rights
edit_user=Username
edit_cloneof=Cloning Webmin user
edit_real=Real name
edit_email=Contact email
edit_group=Member of group
edit_pass=Password
edit_same=Same as Unix
@@ -90,6 +91,7 @@ edit_selall=Select all
edit_invert=Invert selection
edit_hide=Hide Unused
edit_switch=Switch to User
edit_forgot=Send Password Reset Link
edit_return=Webmin user
edit_return2=Webmin group
edit_rbacdeny=RBAC access mode
@@ -148,6 +150,7 @@ save_edays=No days to allow selected
save_ehours=Missing or invalid times to allow
save_ehours2=Start time to allow must be before end
save_etemp=The option to force a password change at next login cannot be used unless <a href='$1'>prompting users to enter new passwords</a> is enabled
save_eemail=Email address cannot contain the : character
delete_err=Failed to delete user
delete_eself=You cannot delete yourself
@@ -247,6 +250,9 @@ log_sync=Changed unix user synchronization
log_sql=Changed user and group database
log_twofactor=Enrolled user $1 with two-factor provider $2
log_onefactor=Dis-enrolled user $1 for two-factor authentication
log_forgot_send=Sent password reset email for user $1 to $2
log_forgot_reset=Reset password for user $1 with email $2
log_forgot_admin=Admin sent password reset email for user $1 to $2
gedit_ecannot=You are not allowed to edit groups
gedit_title=Edit Webmin Group
@@ -510,4 +516,21 @@ twofactor_done=.. complete. Your ID with this provider is <tt>$1</tt>.
twofactor_setup=Two-factor authentication has not been enabled on this system yet, but can be turned on using the <a href='$1'>Webmin Configuration</a> module.
twofactor_ebutton=No button clicked!
forgot_title=Send Password Reset Link
forgot_err=Failed to send password reset link
forgot_header=Password reset link details
forgot_user=Reset password for user
forgot_email=Link delivery method
forgot_email_def=Display link in Webmin
forgot_email_sel=Send link via email to
forgot_send=Send Link
forgot_desc=This page allows you to generate or send a link that can be used to select a new password for a Webmin user to any email address. Be careful which address you send this link to, as it will effectively grant full access to the Webmin login!
forgot_adminmsg=You are receiving this email from the administrator of the Webmin system at $3, for the login $1.\n\nIf you would like to proceed with resetting the password, follow this link :\n$2
forgot_sending=Sending password reset email for $2 to $1 ..
forgot_sent=.. sent
forgot_link=The link below can be used to reset the Webmin password for $1 for the next $2 minutes :
forgot_enosudo=Sudo is not available on this system!
forgot_ecansudo=The user entered does not have sudo permissions
forgot_eunix=The sudo-capable user entered does not exist!
__norefs=1

View File

@@ -37,6 +37,7 @@ foreach my $k (sort { my @a = split(/\s+/, $sessiondb{$a});
next if ($k =~ /^1111111/);
my ($user, $ltime, $lip) = split(/\s+/, $sessiondb{$k});
next if ($user =~ /^\!/ && !$in{'logouts'});
next if ($user =~ /^-/);
next if ($miniserv{'logouttime'} &&
$time_now - $ltime > $miniserv{'logouttime'}*60);
my @cols;

View File

@@ -62,6 +62,10 @@ elsif ($action eq 'switch') {
elsif ($action eq 'twofactor') {
return &text('log_twofactor', $object, $p->{'provider'}, $p->{'id'});
}
elsif ($action eq 'forgot') {
return &text('log_forgot_'.$type, &html_escape($p->{'user'}),
&html_escape($p->{'email'}));
}
else {
return $text{'log_'.$action};
}

View File

@@ -14,24 +14,28 @@ our (%in, %text, %config, %access, $config_directory, $base_remote_user);
# Check for special button clicks, and redirect
if ($in{'but_clone'}) {
&redirect("edit_user.cgi?clone=".&urlize($in{'old'}));
exit;
return;
}
elsif ($in{'but_log'}) {
&redirect("../webminlog/search.cgi?uall=0&mall=1&tall=1&user=".
&urlize($in{'old'}));
exit;
return;
}
elsif ($in{'but_switch'}) {
&redirect("switch.cgi?user=".&urlize($in{'old'}));
exit;
return;
}
elsif ($in{'but_delete'}) {
&redirect("delete_user.cgi?user=".&urlize($in{'old'}));
exit;
return;
}
elsif ($in{'twofactor'}) {
&redirect("twofactor_form.cgi?user=".&urlize($in{'old'}));
exit;
return;
}
elsif ($in{'but_forgot'}) {
&redirect("forgot_form.cgi?user=".&urlize($in{'old'}));
return;
}
# Get the user object
@@ -225,6 +229,8 @@ $user{'nochange'} = !$access{'nochange'} || !defined($in{'nochange'}) ?
$user{'lastchange'} = $old->{'lastchange'};
$user{'olds'} = $old->{'olds'};
$user{'real'} = $in{'real'} =~ /\S/ ? $in{'real'} : undef;
$in{'email'} =~ /:/ && &error($text{'save_eemail'});
$user{'email'} = $in{'email'};
my $raddr = $ENV{'REMOTE_ADDR'};
my @ips;
if ($access{'ips'}) {

View File

@@ -654,6 +654,7 @@ if ($newdir) {
if ($isrc) {
&recursive_set_indent($newdir, $isrc->{'indent'});
}
$newdir{'words'} = &wsplit($newdir{'value'});
@newlines = &directive_lines($newdir);
}
if ($olddir && $newdir) {
@@ -664,6 +665,7 @@ if ($olddir && $newdir) {
$lref->[$olddir->{'eline'}] = $newlines[$#newlines];
$olddir->{'name'} = $newdir->{'name'};
$olddir->{'value'} = $newdir->{'value'};
$olddir->{'words'} = $newdir->{'words'};
}
else {
# Re-writing whole block
@@ -778,17 +780,17 @@ unlink($file);
# beyond the given line.
sub renumber
{
local($d);
if (!$_[3]) { return; }
foreach $d (@{$_[0]}) {
if ($d->{'file'} eq $_[2] && $d->{'line'} >= $_[1]) {
$d->{'line'} += $_[3];
my ($conf, $line, $file, $offset) = @_;
return if (!$offset);
foreach my $d (@$conf) {
if ($d->{'file'} eq $file && $d->{'line'} >= $_[1]) {
$d->{'line'} += $offset;
}
if ($d->{'file'} eq $_[2] && $d->{'eline'} >= $_[1]) {
$d->{'eline'} += $_[3];
if ($d->{'file'} eq $file && $d->{'eline'} >= $_[1]) {
$d->{'eline'} += $offset;
}
if ($d->{'type'}) {
&renumber($d->{'members'}, $_[1], $_[2], $_[3]);
&renumber($d->{'members'}, $line, $file, $offset);
}
}
}
@@ -1466,10 +1468,11 @@ foreach $f (@main::locked_apache_files) {
}
# directive_lines(directive, ...)
# Convery a list of Apache directives into a list of lines
sub directive_lines
{
local @rv;
foreach $d (@_) {
my @rv;
foreach my $d (@_) {
next if ($d->{'name'} eq 'dummy');
my $indent = (" " x $d->{'indent'});
if ($d->{'type'}) {

View File

@@ -153,5 +153,18 @@ else {
}
}
# get_init_status()
# If the init module is installed and there is an atd bootup action, return
# its name, current running status and boot status
sub get_init_status
{
return () if (!&foreign_available("init"));
my $init = defined(&get_init_name) ? &get_init_name() : undef;
return () if (!$init);
my $r = &init::status_action($init);
my $atboot = &init::action_status($init);
return ($init, $r, $atboot);
}
1;

View File

@@ -138,34 +138,31 @@ if ($access{'allow'} && $config{'allow_file'}) {
}
# If there is an init script that runs an atd server, show status
if (&foreign_available("init")) {
&foreign_require("init");
my $init = defined(&get_init_name) ? &get_init_name() : undef;
if ($access{'stop'} && $init) {
print &ui_hr();
print &ui_buttons_start();
my ($init, $r, $atboot) = &get_init_status();
if ($access{'stop'} && $init) {
print &ui_hr();
print &ui_buttons_start();
# Running now?
my $r = &init::status_action($init);
if ($r == 1) {
print &ui_buttons_row("stop.cgi", $text{'index_stop'},
$text{'index_stopdesc'});
}
elsif ($r == 0) {
print &ui_buttons_row("start.cgi", $text{'index_start'},
$text{'index_startdesc'});
}
# Start at boot?
my $atboot = &init::action_status($init);
print &ui_buttons_row("bootup.cgi", $text{'index_boot'},
$text{'index_bootdesc'}, undef,
&ui_radio("boot", $atboot == 2 ? 1 : 0,
[ [ 1, $text{'yes'} ],
[ 0, $text{'no'} ] ]));
print &ui_buttons_end();
# Running now?
my $r = &init::status_action($init);
if ($r == 1) {
print &ui_buttons_row("stop.cgi", $text{'index_stop'},
$text{'index_stopdesc'});
}
elsif ($r == 0) {
print &ui_buttons_row("start.cgi", $text{'index_start'},
$text{'index_startdesc'});
}
# Start at boot?
my $atboot = &init::action_status($init);
print &ui_buttons_row("bootup.cgi", $text{'index_boot'},
$text{'index_bootdesc'}, undef,
&ui_radio("boot", $atboot == 2 ? 1 : 0,
[ [ 1, $text{'yes'} ],
[ 0, $text{'no'} ] ]));
print &ui_buttons_end();
}
&ui_print_footer("/", $text{'index'});

View File

@@ -63,16 +63,21 @@ if ($bind_version && $bind_version =~ /^(\d+\.\d+)\./) {
our $dnssec_dlv_zone = "dlv.isc.org.";
our @dnssec_dlv_key = ( 257, 3, 5, '"BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URkY62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboMQKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VStTDN0YUuWrBNh"' );
my $rand_flag;
# get_rand_flag()
# Return a flag to read from a randomness source
sub get_rand_flag
{
if ($gconfig{'os_type'} =~ /-linux$/ &&
$config{'force_random'} eq '0' &&
-r "/dev/urandom" &&
$bind_version =~ /^9\./ &&
&compare_version_numbers($bind_version, '<', '9.14.2')) {
&compare_version_numbers($bind_version, 9) >= 0 &&
&compare_version_numbers($bind_version, '9.14.2') < 0) {
# Version: 9.14.2 deprecated the use of -r option
# in favor of using /dev/random [bugs:#5370]
$rand_flag = "-r /dev/urandom";
return "-r /dev/urandom";
}
return "";
}
# have_dnssec_tools_support()
# Returns 1 if dnssec-tools support is available and we meet minimum version
@@ -398,10 +403,11 @@ return defined($dir->{'value'}) ? $dir->{'value'} :
# Returns the base directory for named files
sub base_directory
{
if ($_[1] || !-r $zone_names_cache) {
my ($conf, $nocache) = @_;
if ($nocache || !-r $zone_names_cache) {
# Actually work out base
my ($opts, $dir, $conf);
$conf = $_[0] ? $_[0] : &get_config();
my ($opts, $dir);
$conf ||= &get_config();
if (($opts = &find("options", $conf)) &&
($dir = &find("directory", $opts->{'members'}))) {
return $dir->{'value'};
@@ -415,7 +421,7 @@ else {
# Use cache
my %znc;
&read_file_cached($zone_names_cache, \%znc);
return $znc{'base'} || &base_directory($_[0], 1);
return $znc{'base'} || &base_directory($conf, 1);
}
}
@@ -530,12 +536,10 @@ if ($dir->{'type'} && $dir->{'type'} == 1 && $dir->{'members'}) {
}
# directives that need their value to be quoted
my %need_quote;
my @need_quote = ( "file", "zone", "view", "pid-file", "statistics-file",
"dump-file", "named-xfer", "secret" );
foreach my $need (@need_quote) {
$need_quote{$need}++;
}
"dump-file", "named-xfer", "secret", "cert-file", "key-file",
"ca-file" );
my %need_quote = map { $_, 1 } @need_quote;
# directive_lines(&directive, tabs)
# Renders some directive into a number of lines of text
@@ -2481,22 +2485,22 @@ sub list_zone_names
{
# Check if any files have changed, or if the master config has changed, or
# the PID file.
my (%files, %znc);
my ($changed, $filecount, %donefile);
my (%files, %znc, $changed);
my @st = stat($zone_names_cache);
if (@st) {
&read_file_cached_with_stat($zone_names_cache, \%znc);
my $filecount = 0;
foreach my $k (keys %znc) {
if ($k =~ /^file_(.*)$/) {
$filecount++;
$donefile{$1}++;
my @fst = stat($1);
if (!@fst || $fst[9] > $st[9] ||
$znc{'size_'.$1} != $fst[7]) {
$changed = 1;
}
$filecount++;
}
}
$changed = 1 if (!$filecount);
}
else {
$changed = 1;
@@ -2508,6 +2512,11 @@ if ($changed || !$znc{'version'} ||
# Yes .. need to rebuild
%znc = ( );
my $conf = &get_config();
my $gau;
my $opts = &find("options", $conf);
if ($opts && &find("allow-update", $opts->{'members'})) {
$gau = 1;
}
my @views = &find("view", $conf);
my $n = 0;
foreach my $v (@views) {
@@ -2519,7 +2528,7 @@ if ($changed || !$znc{'version'} ||
my $file = &find_value("file", $z->{'members'});
my $up = &find("update-policy", $z->{'members'});
my $au = &find("allow-update", $z->{'members'});
my $dynamic = $up || $au ? 1 : 0;
my $dynamic = $up || $au || $gau ? 1 : 0;
$znc{"zone_".($n++)} = join("\t", $z->{'value'},
$z->{'index'}, $type, $v->{'value'}, $dynamic, $file);
$files{$z->{'file'}}++;
@@ -2535,7 +2544,7 @@ if ($changed || !$znc{'version'} ||
$file ||= ""; # slaves and other types with no file
my $up = &find("update-policy", $z->{'members'});
my $au = &find("allow-update", $z->{'members'});
my $dynamic = $up || $au ? 1 : 0;
my $dynamic = $up || $au || $gau ? 1 : 0;
$znc{"zone_".($n++)} = join("\t", $z->{'value'},
$z->{'index'}, $type, "*", $dynamic, $file);
$files{$z->{'file'}}++;
@@ -3151,6 +3160,13 @@ sub supports_check_zone
return $config{'checkzone'} && &has_command($config{'checkzone'});
}
# supports_tls()
# Returns 1 if DNS over TLS is supported
sub supports_tls
{
return &compare_version_numbers($bind_version, 9.17) >= 0 ? 1 : 0;
}
# check_zone_records(&zone-name|&zone)
# Returns a list of errors from checking some zone file, if any
sub check_zone_records
@@ -3174,6 +3190,36 @@ my $out = &backquote_command(
return $? ? split(/\r?\n/, $out) : ( );
}
# check_zone_warnings(&zone-name|&zone)
# Returns a list of warnings from checking some zone file, if any
sub check_zone_warnings
{
my ($zone) = @_;
my ($zonename, $zonefile);
if ($zone->{'values'}) {
# Zone object
$zonename = $zone->{'values'}->[0];
my $f = &find("file", $zone->{'members'});
$zonefile = $f->{'values'}->[0];
}
else {
# Zone name object
$zonename = $zone->{'name'};
$zonefile = $zone->{'file'};
}
my $absfile = &make_chroot(&absolute_path($zonefile));
my $out = &backquote_command(
$config{'checkzone'}." ".quotemeta($zonename)." ".
quotemeta($absfile)." 2>&1 </dev/null");
my @rv;
foreach my $l (split(/\r?\n/, $out)) {
if ($l =~ /^\Q$absfile\E:\d+:\s*(.*)/) {
push(@rv, $1);
}
}
return @rv;
}
# supports_check_conf()
# Returns 1 if BIND configuration checking is supported, 0 if not
sub supports_check_conf
@@ -3337,10 +3383,8 @@ return &has_command($config{'signzone'}) &&
# dnssec-validation directive is not supported, 0 otherwise
sub supports_dnssec_client
{
my ($bind_major, $bind_minor) = split(/\./, $bind_version);
return $bind_major > 9 ? 2 :
$bind_major == 9 ? ($bind_minor >= 4 ? 2 : 1) : 0;
return &compare_version_numbers($bind_version, 9.4) >= 0 ? 2 :
&compare_version_numbers($bind_version, 9) >= 0 ? 1 : 0;
}
# dnssec_size_range(algorithm)
@@ -3406,7 +3450,7 @@ closedir(ZONEDIR);
# Fork a background job to do lots of IO, to generate entropy
my $pid;
if (!$rand_flag) {
if (!&get_rand_flag()) {
$pid = fork();
if (!$pid) {
exec("find / -type f >/dev/null 2>&1");
@@ -3455,7 +3499,7 @@ else {
"cd ".quotemeta($fn)." && ".
"$config{'keygen'} -a ".quotemeta($alg).
" -b ".quotemeta($zonesize).
" -n ZONE $rand_flag $dom 2>&1");
" -n ZONE ".&get_rand_flag()." $dom 2>&1");
if ($?) {
kill('KILL', $pid) if ($pid);
return $out;
@@ -3467,7 +3511,7 @@ else {
"cd ".quotemeta($fn)." && ".
"$config{'keygen'} -a ".quotemeta($alg).
" -b ".quotemeta($size).
" -n ZONE -f KSK $rand_flag $dom 2>&1");
" -n ZONE -f KSK ".&get_rand_flag()." $dom 2>&1");
kill('KILL', $pid) if ($pid);
if ($?) {
return $out;
@@ -3537,7 +3581,7 @@ $zonekey || return "Could not find DNSSEC zone key";
# Fork a background job to do lots of IO, to generate entropy
my $pid;
if (!$rand_flag) {
if (!&get_rand_flag()) {
$pid = fork();
if (!$pid) {
exec("find / -type f >/dev/null 2>&1");
@@ -3554,7 +3598,7 @@ my $alg = $zonekey->{'algorithm'};
my $out = &backquote_logged(
"cd ".quotemeta($dir)." && ".
"$config{'keygen'} -a ".quotemeta($alg)." -b ".quotemeta($zonesize).
" -n ZONE $rand_flag $dom 2>&1");
" -n ZONE ".&get_rand_flag()." $dom 2>&1");
kill('KILL', $pid) if ($pid);
if ($?) {
return "Failed to generate new zone key : $out";
@@ -4492,4 +4536,24 @@ if ($zone) {
return $r;
}
# find_tls_users(&conf, name)
# Find all listen-on or other directives that use a given TLS key name
sub find_tls_users
{
my ($conf, $name) = @_;
my @rv;
my $opts = &find("options", $conf);
if ($opts) {
my @listen = ( &find("listen-on", $opts->{'members'}),
&find("listen-on-v6", $opts->{'members'}) );
foreach my $l (@listen) {
my $idx = &indexof("tls", @{$l->{'values'}});
if ($idx >= 0 && $l->{'values'}->[$idx+1] eq $name) {
push(@rv, $l);
}
}
}
return @rv;
}
1;

View File

@@ -20,12 +20,22 @@ my $desc = &ip6int_to_net(&arpa_to_ip($zone->{'name'}));
my $file = &make_chroot(&absolute_path($zone->{'file'}));
my @errs = &check_zone_records($zone);
my @warns = &check_zone_warnings($zone);
if (@errs) {
# Show list of errors
print "<b>",&text('check_errs', "<tt>$file</tt>"),"</b><p>\n";
print "<ul>\n";
foreach my $e (@errs) {
print "<li>".&html_escape($e)."\n";
print "<li>".&html_escape($e)."</li>\n";
}
print "</ul>\n";
}
elsif (@warns) {
# Just show warnings
print "<b>",&text('check_warns', "<tt>$file</tt>"),"</b><p>\n";
print "<ul>\n";
foreach my $e (@warns) {
print "<li>".&html_escape($e)."</li>\n";
}
print "</ul>\n";
}

View File

@@ -21,7 +21,7 @@ if (@errs) {
print "<b>",&text('ncheck_errs', "<tt>$file</tt>"),"</b><p>\n";
print "<ul>\n";
foreach my $e (@errs) {
print "<li>".&html_escape($e)."\n";
print "<li>".&html_escape($e)."</li>\n";
}
print "</ul>\n";
}

View File

@@ -22,26 +22,47 @@ print &ui_form_start("save_net.cgi", "post");
print &ui_table_start($text{'net_header'}, "width=100%", 4);
# Ports and addresses to listen on
my @listen = &find("listen-on", $mems);
my @listen = ( &find("listen-on", $mems),
&find("listen-on-v6", $mems) );
my $ltable = &ui_radio("listen_def", @listen ? 0 : 1,
[ [ 1, $text{'default'} ],
[ 0, $text{'net_below'} ] ])."<br>\n";
my @table = ( );
push(@listen, { });
my @tls = map { $_->{'values'}->[0] } &find("tls", $conf);
for(my $i=0; $i<@listen; $i++) {
my $port = $listen[$i]->{'value'} eq 'port' ?
$listen[$i]->{'values'}->[1] : undef;
my @vals = map { $_->{'name'} } @{$listen[$i]->{'members'}};
my $l = $listen[$i];
my $v = $l->{'values'} || [];
my ($port, $tls);
for(my $j=0; $j<@$v; $j++) {
if ($v->[$j] eq "port") {
$port = $v->[++$j];
}
if ($v->[$j] eq "tls") {
$tls = $v->[++$j];
}
}
my @vals = map { $_->{'name'} } @{$l->{'members'}};
push(@table, [
&ui_select("proto_$i",
$l->{'name'} eq 'listen-on-v6' ? 'v6' :
$l->{'name'} eq 'listen-on' ? 'v4' : '',
[ [ '', $text{'net_none'} ],
[ 'v4', 'IPv4' ],
[ 'v6', 'IPv6' ] ]),
&ui_radio("pdef_$i", $port ? 0 : 1,
[ [ 1, $text{'default'} ],
[ 0, &ui_textbox("port_$i", $port, 5) ] ]),
@tls ? ( &ui_select("tls_$i", $tls, [ '', @tls ]) ) : ( ),
&ui_textbox("addrs_$i", join(" ", @vals), 50),
]);
}
$ltable .= &ui_columns_table(
[ $text{'net_port'}, $text{'net_addrs'} ],
[ $text{'net_proto'},
$text{'net_port'},
@tls ? ( $text{'net_tls'} ) : ( ),
$text{'net_addrs'} ],
undef,
\@table,
undef,

View File

@@ -21,7 +21,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -23,7 +23,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -21,7 +21,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -21,7 +21,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -21,7 +21,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -21,7 +21,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -23,7 +23,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -21,7 +21,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -21,7 +21,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -23,7 +23,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -18,7 +18,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -23,7 +23,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -21,7 +21,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -23,7 +23,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -23,7 +23,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -22,7 +22,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -22,7 +22,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -22,7 +22,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -25,7 +25,7 @@ pid_file=/var/run/named/named.pid
chroot=
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -22,7 +22,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -25,7 +25,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -21,7 +21,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -23,7 +23,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -21,7 +21,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -23,7 +23,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -21,7 +21,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -19,7 +19,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -25,7 +25,7 @@ pid_file=/var/run/named/named.pid
chroot=/var/lib/named
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -25,7 +25,7 @@ pid_file=/var/run/named/named.pid
chroot=/var/lib/named
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -25,7 +25,7 @@ pid_file=/var/run/named/named.pid
chroot=/var/lib/named
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -16,7 +16,7 @@ short_names=0
named_path=/usr/syno/named/bin
confirm_zone=1
soa_style=1
allow_underscore=1
allow_underscore=0
pid_file=/var/run/named.pid
by_view=0
show_list=1

View File

@@ -24,7 +24,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
chroot=/
master_dir=/etc/named.d/master

View File

@@ -24,7 +24,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
chroot=/
master_dir=/var/named/master

View File

@@ -24,7 +24,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
chroot=/var/lib/named/chroot
master_dir=/var/named/master

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -23,7 +23,7 @@ stop_cmd=/etc/init.d/named stop
pid_file=/var/run/named/named.pid
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -21,7 +21,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

View File

@@ -20,7 +20,7 @@ forwardzonefilename_format=ZONE.hosts
reversezonefilename_format=ZONE.rev
rev_must=0
ipv6_mode=1
allow_underscore=1
allow_underscore=0
by_view=0
confirm_zone=1
confirm_rec=0

63
bind8/edit_tls.cgi Executable file
View File

@@ -0,0 +1,63 @@
#!/usr/local/bin/perl
# Show a form to edit or create a TLS key and cert
use strict;
use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
our (%access, %text, %in);
require './bind8-lib.pl';
$access{'defaults'} || &error($text{'tls_ecannot'});
&supports_tls() || &error($text{'tls_esupport'});
&ReadParse();
# Get the TLS config being edited
my $tls;
if (!$in{'new'}) {
my $conf = &get_config();
my @tls = &find("tls", $conf);
($tls) = grep { $_->{'values'}->[0] eq $in{'name'} } @tls;
$tls || &error($text{'tls_egone'});
}
else {
$tls = { 'values' => [],
'members' => [] };
}
my $mems = $tls->{'members'};
&ui_print_header(undef, $in{'new'} ? $text{'tls_title1'}
: $text{'tls_title2'}, "");
print &ui_form_start("save_tls.cgi", "post");
print &ui_hidden("new", $in{'new'});
print &ui_hidden("oldname", $in{'name'});
print &ui_table_start($text{'tls_header'}, undef, 2);
# Name of this key
print &ui_table_row($text{'tls_name'},
&ui_textbox("name", $tls->{'values'}->[0], 30));
# Key file
print &ui_table_row($text{'tls_key'},
&ui_filebox("key", &find_value("key-file", $mems), 60));
# Cert file
print &ui_table_row($text{'tls_cert'},
&ui_filebox("cert", &find_value("cert-file", $mems), 60));
# CA cert file
my $ca = &find_value("ca-file", $mems);
print &ui_table_row($text{'tls_ca'},
&ui_radio("ca_def", $ca ? 0 : 1,
[ [ 1, $text{'tls_ca_def'} ],
[ 0, &ui_filebox("ca", $ca, 60) ] ]));
print &ui_table_end();
print &ui_form_end(
$in{'new'} ? [ [ undef, $text{'create'} ] ]
: [ [ undef, $text{'save'} ],
[ 'delete', $text{'delete'} ] ]
);
&ui_print_footer("list_tls.cgi", $text{'tls_return'});

View File

@@ -26,6 +26,10 @@ foreach my $z (@zones) {
$v eq "." || !&can_edit_zone($z) ||
&arpa_to_ip($v) !~ /\Q$in{'search'}\E/i);
my $t = $z->{'type'};
next if (!$t);
$t = "delegation" if ($t eq "delegation-only");
$t = "master" if ($t eq "primary");
$t = "slave" if ($t eq "secondary");
if ($z->{'view'}) {
push(@zlinks, "edit_$t.cgi?zone=$z->{'name'}".
"&view=$z->{'viewindex'}");

BIN
bind8/images/tls.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

View File

@@ -118,16 +118,19 @@ if ($access{'defaults'}) {
if ($access{'defaults'}) {
# display global options
print &ui_subheading($text{'index_opts'});
my @olinks = ("conf_servers.cgi", "conf_logging.cgi", "conf_acls.cgi",
"conf_files.cgi", "conf_forwarding.cgi", "conf_net.cgi",
"conf_misc.cgi", "conf_controls.cgi", "conf_keys.cgi",
"conf_zonedef.cgi", "list_slaves.cgi",
$bind_version >= 9 ? ( "conf_rndc.cgi" ) : ( ),
&supports_dnssec_client() ? ( "conf_trusted.cgi" ) : ( ),
((&supports_dnssec()) && (&have_dnssec_tools_support())) ? ( "conf_dnssectools.cgi" ) : ( ),
&supports_dnssec() ? ( "conf_dnssec.cgi" ) : ( ),
&supports_check_conf() ? ( "conf_ncheck.cgi" ) : ( ),
"conf_manual.cgi" );
my @olinks = (
"conf_servers.cgi", "conf_logging.cgi", "conf_acls.cgi",
"conf_files.cgi", "conf_forwarding.cgi", "conf_net.cgi",
"conf_misc.cgi", "conf_controls.cgi", "conf_keys.cgi",
"conf_zonedef.cgi", "list_slaves.cgi", "conf_rndc.cgi",
&supports_dnssec_client() ? ( "conf_trusted.cgi" ) : ( ),
&supports_dnssec() && &have_dnssec_tools_support() ?
( "conf_dnssectools.cgi" ) : ( ),
&supports_dnssec() ? ( "conf_dnssec.cgi" ) : ( ),
&supports_tls() ? ( "list_tls.cgi" ) : ( ),
&supports_check_conf() ? ( "conf_ncheck.cgi" ) : ( ),
"conf_manual.cgi",
);
my @otitles = map { /(conf|list)_(\S+).cgi/; $text{$2."_title"} } @olinks;
my @oicons = map { /^(conf|list)_(\S+).cgi/; "images/$2.gif"; } @olinks;
&icons_table(\@olinks, \@otitles, \@oicons, 6);
@@ -453,7 +456,7 @@ else {
print &ui_links_row(\@crlinks);
}
if ($access{'views'} && $bind_version >= 9) {
if ($access{'views'}) {
# Display list of views
print &ui_hr();
print &ui_subheading($text{'index_views'});

View File

@@ -1173,6 +1173,7 @@ rmass_clash=إنشاء حتى لو كان السجل موجود بالفعل؟
check_title=تحقق السجلات
check_ecannot=غير مسموح لك بالتحقق من السجلات
check_errs=The following errors were found in the records file $1 ..
check_warns=تم العثور على التحذيرات التالية في ملف السجلات $1 ..
check_allok=No errors were found in the records file $1.
ncheck_title=تحقق BIND التكوين

View File

@@ -59,6 +59,8 @@ log_delete_recs2=Изтрити $1 записи в зона $2
massdelete_vwarn=Някои зони са свързани с домейна Virtualmin $1 и затова не трябва да се изтриват тук!
massdelete_vwarn2=Някои зони са свързани с домейна Virtualmin $1 и $2 други и затова не трябва да се изтриват тук!
check_warns=Следните предупреждения бяха намерени във файла със записи $1 ..
zonekey_algorithm=DNSSEC алгоритъм : $1
zonekey_ds_keytag=Ключов етикет
zonekey_ds_alg=Алгоритъм

View File

@@ -63,6 +63,8 @@ log_delete_recs2=S'han suprimit $1 registres a la zona $2
massdelete_vwarn=Algunes zones estan associades al domini Virtualmin $1, per tant, no hauríem de suprimir-les aquí.
massdelete_vwarn2=Algunes zones estan associades al domini Virtualmin $1 i $2, per tant, no hauríem de suprimir-les.
check_warns=S'han trobat els advertiments següents al fitxer de registres $1 ..
zonekey_algorithm=Algorisme DNSSEC : $1
zonekey_ds_keytag=Etiqueta clau
zonekey_ds_alg=Algorisme

View File

@@ -289,6 +289,7 @@ rmass_eclash2=.. záznam se stejným názvem a stejnou hodnotou $1 již existuje
check_title=Zkontrolujte záznamy
check_ecannot=Není dovoleno kontrolovat záznamy
check_errs=V souboru záznamů $1 byly nalezeny následující chyby.
check_warns=V souboru záznamů $1 byla nalezena následující varování ..
check_allok=V souboru záznamů $1 nebyly nalezeny žádné chyby.
ncheck_title=Zkontrolujte BIND Config

View File

@@ -1173,6 +1173,7 @@ rmass_clash=Opret, selvom der allerede findes en post?
check_title=Tjek poster
check_ecannot=Du har ikke tilladelse til at kontrollere poster
check_errs=Følgende fejl blev fundet i posteringsfilen $1 ..
check_warns=Følgende advarsler blev fundet i postfilen $1 ..
check_allok=Der blev ikke fundet nogen fejl i postfilen $1.
ncheck_title=Kontroller BIND Config

File diff suppressed because it is too large Load Diff

View File

@@ -1173,6 +1173,7 @@ rmass_clash=Δημιουργήστε ακόμα και αν υπάρχει ήδ
check_title=Ελέγξτε τις εγγραφές
check_ecannot=Δεν επιτρέπεται να ελέγχετε τα αρχεία
check_errs=Τα παρακάτω σφάλματα βρέθηκαν στο αρχείο εγγραφών $1 ..
check_warns=Οι ακόλουθες προειδοποιήσεις βρέθηκαν στο αρχείο εγγραφών $1 ..
check_allok=Δεν βρέθηκαν σφάλματα στο αρχείο εγγραφών $1.
ncheck_title=Ελέγξτε το BIND Config

View File

@@ -732,6 +732,9 @@ net_saddr=Source IP address for queries
net_ip=IP address
net_sport=Source port for queries
net_port=Port number
net_proto=Protocol
net_tls=SSL Key
net_none=&lt;None&gt;
net_topol=Nameserver choice topology
net_recur=Allow recursive queries from
net_err=Failed to save address and topology options
@@ -915,6 +918,9 @@ log_sign=Updated DNSSEC signatures for zone $1
log_resign=Re-signed DNSSEC key for zone $1
log_trusted=Changed DNSSEC verification
log_dnssec=Change DNSSEC key re-signing
log_create_tls=Created SSL key $1
log_delete_tls=Deleted SSL key $1
log_modify_tls=Updated SSL key $1
convert_err=Failed to convert zone
convert_efile=A records file must be specified before a slave zone can be converted to a master.
@@ -1173,6 +1179,7 @@ rmass_clash=Create even if record already exists?
check_title=Check Records
check_ecannot=You are not allowed to check records
check_errs=The following errors were found in the records file $1 ..
check_warns=The following warnings were found in the records file $1 ..
check_allok=No errors were found in the records file $1.
ncheck_title=Check BIND Config
@@ -1348,4 +1355,31 @@ 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_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
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.
tls_title1=Add SSL Key
tls_title2=Edit SSL Key
tls_egone=SSL key no longer exists!
tls_header=Key and certificate details
tls_cerr=Failed to create SSL key
tls_derr=Failed to delete SSL key
tls_err=Failed to save SSL key
tls_ename=SSL key name can only contain letters, numbers, underscore and dash
tls_ekey=Missing or non-existent SSL key file
tls_ecert=Missing or non-existent SSL certificate file
tls_eca=Missing or non-existent SSL CA certificate file
tls_eusers=Still in use by a port or address to listen on
tls_return=SSL keys and certificates
__norefs=1

View File

@@ -489,6 +489,7 @@ rmass_clash=¿Crear incluso si el registro ya existe?
check_title=Verificar registros
check_ecannot=No tiene permiso para verificar registros
check_errs=Se encontraron los siguientes errores en el archivo de registros $1 ..
check_warns=Las siguientes advertencias se encontraron en el archivo de registros $1 ..
check_allok=No se encontraron errores en el archivo de registros $1.
ncheck_title=Verifique la configuración de BIND

View File

@@ -1173,6 +1173,7 @@ rmass_clash=Sortu erregistroa dagoeneko badago?
check_title=Egiaztatu Erregistroak
check_ecannot=Ezin duzu erregistroak egiaztatu
check_errs=Ondorengo akatsak aurkitu dira $1 erregistroko fitxategian.
check_warns=Honako abisu hauek $1 erregistro fitxategian aurkitu dira ..
check_allok=Ez da akatsik aurkitu $1 erregistroko fitxategian.
ncheck_title=Begiratu BIND Config

View File

@@ -429,6 +429,7 @@ rmass_clash=حتی اگر سابقه قبلاً وجود داشته باشد ا
check_title=سوابق را بررسی کنید
check_ecannot=شما مجاز به بررسی سوابق نیستید
check_errs=The following errors were found in the records file $1 ..
check_warns=اخطارهای زیر در فایل سوابق $1 یافت شد ..
check_allok=No errors were found in the records file $1.
ncheck_title=پیکربندی BIND را بررسی کنید

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