Compare commits

...

230 Commits
2.400 ... 2.500

Author SHA1 Message Date
Ilia Ross
220d3124ef Merge pull request #2536 from Pedro-Cunha/webmin-setup-repo-repokey-perm
webmin-setup-repo.sh: Set mode of repo key to 644 for deb distros
2025-09-04 10:03:04 +03:00
Pedro Cunha
8b88034335 webmin-setup-repo.sh: Set mode of repo key to 644 for deb distros 2025-09-04 08:58:44 +02:00
Ilia Ross
e5bff8f31b Merge branch 'master' of github.com:webmin/webmin 2025-09-04 01:31:11 +03:00
Ilia Ross
ba4e72dfc2 Update changelog 2025-09-04 01:30:50 +03:00
Jamie Cameron
45eaad6eff New version bump 2025-09-03 15:29:40 -07:00
Jamie Cameron
cd113a468a Fix duplicate string 2025-09-03 15:29:01 -07:00
Ilia Ross
4c6ffd19a4 Add support for MariaDB 15 in Debian 13 2025-09-04 00:56:45 +03:00
Pedro Cunha
92e71e9ba3 webmin-setup-repo.sh: Set mode of repo key to 644 for deb distros 2025-09-03 15:33:15 +02:00
Ilia Ross
e56ea150fe Fix flag names consistency 2025-09-03 14:40:37 +03:00
Ilia Ross
e191220178 Add flags to skip Webmin module's info fields 2025-09-03 14:36:56 +03:00
Ilia Ross
097ef22bbc Add flags to skip module's info fields 2025-09-03 12:41:27 +03:00
Ilia Ross
66be8e9c20 Revert "Respect --rpm-recommends flag"
This reverts commit 81aa781bc9.
2025-09-02 13:00:36 +03:00
Pedro Cunha
cf6b79b740 webmin-setup-repo.sh: Set mode of repo key to 644 for deb distros 2025-09-02 10:13:13 +02:00
Jamie Cameron
81aa781bc9 Respect --rpm-recommends flag 2025-09-01 20:33:55 -07:00
Jamie Cameron
69b707e945 Enable sudo by default on RPM-based systems
https://forum.virtualmin.com/t/almalinux-no-login-create-user/134806
2025-09-01 20:02:44 -07:00
Ilia Ross
1424e248ff Fix to use correct directive names for control path 2025-09-02 00:25:19 +03:00
Ilia Ross
249dabde7e Fix support for index and control files location with Dovecot 2.4 2025-09-01 23:58:22 +03:00
Ilia Ross
443883d364 Fix to improve API name 2025-09-01 23:20:13 +03:00
Ilia Ross
156cb80104 Add support for Dovecot 2.4 in "Mail Files" page 2025-09-01 19:49:47 +03:00
Ilia Ross
0885a17f55 Add support for Dovecot 2.4 in "User and Login Options" page 2025-09-01 19:22:35 +03:00
Ilia Ross
0ffaed090a Fix to revert disabling "unsupported pages" in Dovecot 2.4
This reverts commit c2c99e3305.
2025-09-01 19:18:21 +03:00
Ilia Ross
55013abadc Fix missing LOGIN auth 2025-09-01 19:17:11 +03:00
Jamie Cameron
83a85aed93 Add support for mail_driver directive 2025-08-31 18:52:52 -07:00
Jamie Cameron
81b0bee9ee Merge branch 'master' of github.com:webmin/webmin 2025-08-31 17:48:22 -07:00
Jamie Cameron
b53504dd01 POP3 is so rarlely used that we can just drop the UIDL format option 2025-08-31 17:48:16 -07:00
Ilia Ross
c2c99e3305 Fix to disable unsupported pages for now in Dovecot 2.4 2025-08-31 22:36:15 +03:00
Ilia Ross
671c62289d Fix Dovecot 2.4 "SSL Configuration" page work 2025-08-31 22:30:09 +03:00
Jamie Cameron
d296b83192 Merge branch 'master' of github.com:webmin/webmin 2025-08-30 20:50:59 -07:00
Jamie Cameron
1d898d83fb Fix another case where version is compared wrong
https://forum.virtualmin.com/t/tlsa-rrsig-fail/134634
2025-08-30 20:49:12 -07:00
Ilia Ross
90fa7fede0 Fix to return actual Postfix status correctly
https://github.com/webmin/webmin/issues/2534
2025-08-30 15:04:08 +03:00
Jamie Cameron
415e7116f9 disable_plaintext_auth has been renamed 2025-08-29 22:24:20 -07:00
Jamie Cameron
033d94483f Support new mail_path directive 2025-08-29 21:31:58 -07:00
Jamie Cameron
69035e0a34 Merge branch 'master' of github.com:webmin/webmin 2025-08-29 15:29:32 -07:00
Jamie Cameron
bab8d7a0f0 Handle case where Postfix isn't even installed
https://github.com/webmin/webmin/issues/2534
2025-08-29 15:29:08 -07:00
Ilia Ross
9e6ae753e0 Update change log for upcoming Webmin version 2.500 2025-08-30 01:07:03 +03:00
Ilia Ross
42b6cac7b4 Fix words consistency 2025-08-30 01:04:54 +03:00
Ilia Ross
6ca908cf80 Add using relative dates in some pages where it makes sense 2025-08-29 15:32:41 +03:00
Ilia Ross
3be8a327ad Add API to display relative dates 2025-08-29 15:13:27 +03:00
Ilia Ross
16110e3e3e Fix last logins on dashboard to show usernames, and for admin display all users from the past 3 days 2025-08-27 16:54:44 +03:00
Ilia Ross
8f508724e4 Fix icon 2025-08-23 11:57:59 +03:00
Ilia Ross
e2646af3ab Fix title 2025-08-23 11:52:01 +03:00
Ilia Ross
ef55f007a4 Fix CPU load stats on macOS
https://forum.virtualmin.com/t/cpu-load-stats-are-incorrect-in-macos/134723/7?u=ilia
2025-08-21 20:42:35 +03:00
Ilia Ross
613b9e5ffa Add support to show last boot logs
https://forum.virtualmin.com/t/previous-boot-log/134731?u=ilia
2025-08-21 12:22:18 +03:00
Jamie Cameron
06744537d6 What if user isn't set at all 2025-08-20 16:17:37 -07:00
Jamie Cameron
3925dd829b Merge branch 'master' of github.com:webmin/webmin 2025-08-19 14:26:35 -07:00
Jamie Cameron
e5bff72e57 Return a useful error if IPC::Open3 is missing 2025-08-19 14:25:01 -07:00
Ilia Ross
dd445a67f1 Fix to add identifier for pre tag 2025-08-19 22:45:46 +03:00
Ilia Ross
29a4b6b598 Add .editorconfig #2531 2025-08-19 11:44:39 +03:00
Jamie Cameron
56729f7e3d Add option to customized the SMTP login
https://github.com/webmin/webmin/discussions/2530
2025-08-18 16:48:01 -07:00
Jamie Cameron
92b90a8170 Allow send_text_mail to take SMTP user and pass params
https://github.com/webmin/webmin/discussions/2530
2025-08-18 16:31:47 -07:00
Ilia Ross
783ad6f3a2 Fix ui textbox support extra class param 2025-08-14 02:21:10 +03:00
Ilia Ross
0fd02d4381 Add field sizing content class 2025-08-14 02:13:19 +03:00
Ilia Ross
4c2fde6847 Fix to test if database supports account locking correctly 2025-08-13 21:20:25 +03:00
Ilia Ross
9065de316a Fix not to fail on MySQL 5.5
99889c1f30 (commitcomment-163892642)
2025-08-13 11:11:09 +03:00
Ilia Ross
679a1c386e Add a way not to display bottom select all buttons 2025-08-10 17:44:12 +03:00
Ilia Ross
462483b667 Fix squashed tables bug 2025-08-09 16:41:45 +03:00
Jamie Cameron
58467ece0b Add dovecot IMAP location 2025-08-05 16:41:03 -07:00
Jamie Cameron
e864fa785f Merge branch 'master' of github.com:webmin/webmin 2025-08-05 13:28:40 -07:00
Jamie Cameron
5aba173111 Support MariaBD version 12
https://github.com/webmin/webmin/issues/2522
2025-08-05 13:28:03 -07:00
Ilia Ross
9305ddbdd5 Fix alerts positioning inside details 2025-08-04 21:28:50 +03:00
Ilia Ross
08d990ab13 Fix to support inlined details element (on the same line with text when opened) 2025-08-04 20:58:10 +03:00
Jamie Cameron
ecbeaf7bc7 Add support for IMAP via local command 2025-08-02 19:39:33 -07:00
Jamie Cameron
f8cb0db802 Show a different message for the reboot required monitor
https://github.com/webmin/webmin/issues/2518
2025-08-02 15:21:32 -07:00
Jamie Cameron
77b134fec1 This function is never called 2025-08-02 11:52:23 -07:00
Jamie Cameron
060a2f2853 Merge branch 'master' of github.com:webmin/webmin 2025-08-01 14:58:50 -07:00
Jamie Cameron
88c71b5dd4 Add UI field for slave server key
https://sourceforge.net/p/webadmin/bugs/5657/
2025-08-01 14:58:43 -07:00
Ilia Ross
f99f5fbae6 Revert previous commit
5ee080d24a (commitcomment-163253013)
2025-08-01 11:21:57 +03:00
Ilia Ross
2037af9d25 Add support for configuring WebSocket binding
5ee080d24a (commitcomment-163197549)
2025-07-31 15:21:33 +03:00
Jamie Cameron
d8988bd9f0 Merge branch 'master' of github.com:webmin/webmin 2025-07-30 16:59:39 -07:00
Jamie Cameron
5ee080d24a Only listen on localhost
https://github.com/webmin/authentic-theme/issues/1713
2025-07-30 16:59:32 -07:00
Ilia Ross
54bb5eac1e Fix output print 2025-07-26 23:29:50 +03:00
Ilia Ross
10790ccc7f Fix to make this page progressive 2025-07-26 23:29:19 +03:00
Ilia Ross
820453cc8c Add a way to run encrypt/decrypt as another user, defaulting to nobody
69681c01d4 (r162892288)
2025-07-26 15:01:18 +03:00
Ilia Ross
3d2ea49a47 Fix to use quotemeta instead
69681c01d4 (r162892280)
2025-07-26 14:21:45 +03:00
Ilia Ross
69681c01d4 Add reversible encryption helpers API 2025-07-25 14:24:43 +03:00
Ilia Ross
fe8545703d Add support for timeouts in temporary rules in FirewallD
https://forum.virtualmin.com/t/fantastic-new-addition-to-firewall-module/134328/10?u=ilia
2025-07-25 02:05:50 +03:00
Ilia Ross
f130112177 Fix to use correct default value 2025-07-25 01:43:46 +03:00
Ilia Ross
c32b04a7e6 Fix to make method configurable 2025-07-24 23:31:14 +03:00
Ilia Ross
afa9e9bd38 Fix to rethink what CPU fan is #2517
[no-build]
2025-07-24 22:50:18 +03:00
Ilia Ross
73d6333f19 Merge branch 'master' of github.com:webmin/webmin 2025-07-24 15:31:59 +03:00
Ilia Ross
549c786b84 Fix func name
https://github.com/webmin/webmin/issues/2519
2025-07-24 15:31:53 +03:00
Jamie Cameron
e15ab46a98 Improve wording when no reboot is needed
https://github.com/webmin/webmin/issues/2518
2025-07-23 23:57:12 -07:00
Ilia Ross
63abfbfe87 Fix not to add a new line to the content 2025-07-23 23:44:36 +03:00
Ilia Ross
da5b814d2b Fix query as the order matters
* Note: When "Show blob and text fields as" option is set to "Links to download" the download won't work if the sorting is active
2025-07-22 13:48:45 +03:00
Ilia Ross
187b7c72a8 Fix download link in MySQL rows
https://forum.virtualmin.com/t/mariadb-download-link-when-viewing-text-database-fields/134323/14
2025-07-22 13:05:39 +03:00
Ilia Ross
a08d104f82 Fix nested details to display nicely 2025-07-20 22:55:08 +03:00
Ilia Ross
71f441375b Add support for fit class in details 2025-07-20 17:30:55 +03:00
Ilia Ross
53fb520392 Fix to consider musthost directive too 2025-07-17 19:12:47 +03:00
Jamie Cameron
f5305eb065 URL for use in emails should use HTTP hostname if available
https://forum.virtualmin.com/t/webmin-virtualmin-password-recovery/132914/82
2025-07-17 01:46:46 -07:00
Ilia Ross
cd51f76062 Fix how help bubble appear in tables 2025-07-17 00:25:53 +03:00
Ilia Ross
147a10dd8a Fix tooltip align 2025-07-16 18:28:44 +03:00
Ilia Ross
f17f92c5c0 Fix table layout 2025-07-16 18:24:33 +03:00
Jamie Cameron
69b9756b4a Merge pull request #2512 from webmin/dev/init-systemd-improvements
Add improvements to systemd section of Init module
2025-07-14 18:23:11 +08:00
Ilia Ross
6935174133 Fix to consider it a bad request only if there is one 2025-07-13 17:43:47 +03:00
Ilia Ross
76efb4ee10 Fix not to show runlevels config option for systemd 2025-07-12 19:40:04 +03:00
Ilia Ross
ed42dd5822 Fix to always show description 2025-07-11 15:25:02 +03:00
Jamie Cameron
51c86d41d4 Allow the primary file to also be home-relative 2025-07-11 00:47:19 -07:00
Jamie Cameron
d8166e9a8e Allow use of ~ in autoreply file 2025-07-10 04:40:22 -07:00
Jamie Cameron
0a0ad2f119 Only update session time when there is actually websockets traffic
https://github.com/webmin/webmin/pull/2510
2025-07-10 04:31:36 -07:00
Jamie Cameron
137af3637b Allow reply-tracking file to be relative to home dir 2025-07-09 16:13:56 -07:00
Jamie Cameron
d2863b7c4c Delete useless ssl_redirect option 2025-07-09 15:59:16 -07:00
Jamie Cameron
0f721a17ae Merge pull request #1718 from tgurr/sslrenegotiation
Disable SSL/TLS renegotiation
2025-07-07 17:20:37 +10:00
Jamie Cameron
72014ab2d7 Merge pull request #2514 from webmin/dev/option-enforce-ssl
Add the ability to re-enforce SSL connections and enable it by default
2025-07-07 08:53:24 +10:00
Ilia Ross
2d86d8c77a Fix to correctly open ports on contemporary systems 2025-07-06 21:08:18 +03:00
Ilia Ross
0bcbcd94b8 Fix to always send ports disregard of the firewall 2025-07-06 21:05:20 +03:00
Ilia Ross
f353ae31d8 Fix typos 2025-07-06 20:44:35 +03:00
Ilia Ross
24cd121642 Update outdated SSL explanations 2025-07-06 20:41:24 +03:00
Ilia Ross
11de78ce51 Add ability to configure SSL enforcement options in UI 2025-07-06 20:24:06 +03:00
Ilia Ross
6b75672534 Add ability to enforce SSL by default 2025-07-06 20:02:34 +03:00
Ilia Ross
c0f886b670 Fix not to show connection error if SSL is explicitly disabled
[no-build]
2025-07-06 15:43:00 +03:00
Ilia Ross
784b2b42e7 Fix wording 2025-07-06 14:03:19 +03:00
Ilia Ross
9dc877910f Fix to always show summary arrow when opened 2025-07-06 02:27:13 +03:00
Ilia Ross
a65f9f5d6c Fix to respect config option and show no description 2025-07-05 18:57:23 +03:00
Ilia Ross
4d417ea4bf Fix to put lengthy descriptions to a nice details element 2025-07-05 16:38:55 +03:00
Ilia Ross
2e245a1035 Add a separate "Unit type" column 2025-07-05 16:03:47 +03:00
Ilia Ross
049542b7ed Add DropInPaths property 2025-07-05 15:43:26 +03:00
Ilia Ross
780cc982b7 Revert "Fix to show .service unit type"
72621c2929 (commitcomment-161382677)

This reverts commit 37f9ce4bb4.
2025-07-04 01:18:58 +03:00
Jamie Cameron
848422d256 Merge branch 'master' of github.com:webmin/webmin 2025-07-03 15:15:20 -07:00
Jamie Cameron
f1e96e3097 Re-open the debug and error logs if cleared periodically 2025-07-03 15:11:10 -07:00
Ilia Ross
90f4265389 Fix to use unit term for systemd systems 2025-07-03 13:28:55 +03:00
Ilia Ross
37f9ce4bb4 Fix to show .service unit type
72621c2929 (commitcomment-161316248)
2025-07-03 13:10:00 +03:00
Jamie Cameron
ceb3e583a3 Reduce duplication in list of unit types 2025-07-02 16:51:17 -07:00
Jamie Cameron
436d6f70bb Its cleaner for the API to always return a list 2025-07-02 16:48:39 -07:00
Jamie Cameron
72621c2929 No need to show the .service suffix 2025-07-02 16:44:21 -07:00
Jamie Cameron
af07c6c9d9 The notimeout flag is never set 2025-07-02 16:21:11 -07:00
Jamie Cameron
740f5b9d49 delete support for the webmin_notimeout param, which as far as I can tell is never used 2025-07-02 15:10:19 -07:00
Jamie Cameron
cb1368f07c The need for this hack is long gone 2025-07-02 14:54:49 -07:00
Ilia Ross
755325f9a5 Fix to enable log clearing similar to packaged version 2025-07-02 22:08:26 +03:00
Ilia Ross
dd914c7ecf Fix to partially revert a fix to enable log rotation for Webmin logs
This reverts commit 58580b7f4b.

58580b7f4b (r161290315)
2025-07-02 21:39:36 +03:00
Ilia Ross
489583708e Add support for clickable badge for insecure connection on login page 2025-07-02 16:37:48 +03:00
Ilia Ross
58580b7f4b Fix to enable log rotation for Webmin logs 2025-07-01 15:10:49 +03:00
Ilia Ross
d9a120c760 Fix to remove non-breakable spaces that don't belong in values within parentheses 2025-07-01 14:33:27 +03:00
Ilia Ross
fb832eff82 Fix to always enable HSTS 2025-06-30 14:08:54 +03:00
Ilia Ross
75b0a6f7bb Fix sending HSTS over plain HTTP does nothing
* Note: per the spec (RFC 6797), HSTS only takes effect when delivered on an HTTPS response

https://datatracker.ietf.org/doc/html/rfc6797#section-7.2
2025-06-30 13:43:46 +03:00
Ilia Ross
40707d8602 Update changelog 2025-06-29 23:04:51 +03:00
Ilia Ross
ac45266ee4 Add missing referenced variable 2025-06-29 22:28:42 +03:00
Ilia Ross
522aeb5264 Fix to consider ancient systems 2025-06-29 22:28:30 +03:00
Ilia Ross
1d24db1686 Add a warning to the login pages if the connection is not secure 2025-06-29 13:42:02 +03:00
Jamie Cameron
527043b54d Merge pull request #2506 from webmin/dev/fix-support-for-ssleay-1.93+
Fix latest SSLeay support for redirects to SSL work
2025-06-28 18:20:24 -07:00
Ilia Ross
56b62346b4 Fix not to use SSL unless clients wants it explicitly 2025-06-29 01:04:30 +03:00
Ilia Ross
ee39f99d23 Fix not to print unnecessary horizontal line
* Note: we're already inside the container
2025-06-28 15:02:23 +03:00
Ilia Ross
a223243db4 Fix comment for clarity 2025-06-27 04:01:15 +03:00
Ilia Ross
b59bdc4f1a Fix latest SSLeay support for redirects to SSL work 2025-06-27 03:57:06 +03:00
Ilia Ross
d087f9f024 Fix to correctly concatenate if string is empty 2025-06-24 13:33:26 +03:00
Jamie Cameron
1607a59239 Handle case where mime_header_checks is not set
https://forum.virtualmin.com/t/double-header-checks/133851/8
2025-06-23 16:52:26 -07:00
Jamie Cameron
70589cf88a Fix regexp to match actual output
https://github.com/webmin/webmin/issues/2501
2025-06-22 15:58:07 -07:00
Jamie Cameron
c429fbb202 Merge branch 'master' of github.com:webmin/webmin 2025-06-22 14:11:53 -07:00
Jamie Cameron
f24375e13a Deal with DNF5 format
https://github.com/webmin/webmin/issues/2501
2025-06-22 14:11:43 -07:00
Ilia Ross
d428f4d4c1 Fix comment
49ceeebbf8 (commitcomment-160355697)
2025-06-22 01:02:51 +03:00
Ilia Ross
f0e07518c9 Fix setting innodb_file_per_table option as it's always enabled by default 2025-06-21 22:45:17 +03:00
Ilia Ross
29709c3c51 Update changelog for another minor release 2025-06-21 21:05:07 +03:00
Ilia Ross
fb71fbd5ae Fix to show output properly without redirecting prematurely 2025-06-21 20:49:55 +03:00
Ilia Ross
a1f06c5548 Fix text consistency 2025-06-21 20:49:33 +03:00
Jamie Cameron
10e8a420c0 Filter out instances of the same version 2025-06-21 10:39:35 -07:00
Jamie Cameron
8149eef10a Add status monitor for PHP FPM
https://github.com/webmin/webmin/issues/2499
2025-06-20 21:53:14 -07:00
Jamie Cameron
c4b98ef376 Nut UPS is no longer supported 2025-06-19 21:31:41 -07:00
Jamie Cameron
621d5c22bc CFengine is no longer supported 2025-06-19 21:30:34 -07:00
Jamie Cameron
98000bb007 BIND 4 is no longer supported 2025-06-19 21:29:46 -07:00
Jamie Cameron
d90a33bb0c Jabber is no longer supported by Webmin 2025-06-19 21:27:45 -07:00
Jamie Cameron
d795fc7d60 Merge branch 'master' of github.com:webmin/webmin 2025-06-19 21:23:30 -07:00
Jamie Cameron
b397ece0ab Most options have moved away from set-variable
https://github.com/webmin/webmin/issues/2497
2025-06-19 21:21:47 -07:00
Jamie Cameron
0a11f182b0 Merge pull request #2498 from webmin/dev/musthost-redirect
Add ability to redirect to enforced host
2025-06-18 12:32:05 -07:00
Ilia Ross
7c05368e8f Add UI API to mask sensitive text unless specifically hovered 2025-06-18 16:53:55 +03:00
Ilia Ross
49ceeebbf8 Add ability to redirect to enforced host 2025-06-17 20:28:49 +03:00
Jamie Cameron
01867c86e0 new version bump 2025-06-16 21:09:27 -07:00
Ilia Ross
008890dfa1 Update changelog 2025-06-16 20:52:29 +03:00
Ilia Ross
5d846e80b2 Fix to use new API to properly resolve default value
55d03d426a (commitcomment-159889070)
2025-06-15 23:54:37 +03:00
Jamie Cameron
ce6bbe44ff Factor out code to create the site file, and add a function to force a re-gen 2025-06-15 08:24:17 -07:00
Ilia Ross
3bc15788af Fix warnings 2025-06-15 14:52:29 +03:00
Jamie Cameron
faa5dddb0a Merge branch 'master' of github.com:webmin/webmin 2025-06-12 09:57:24 -07:00
Jamie Cameron
55d03d426a Add option for SMTPUTF8 2025-06-12 09:57:16 -07:00
Ilia Ross
da9aa22fa7 Fix not to rely on which, or the scriptlets will fail on EL 10 systems 2025-06-12 19:17:50 +03:00
Ilia Ross
06ce137903 Fix to consider path separator as config init may never be run 2025-06-12 01:57:35 +03:00
Ilia Ross
5462c3bbf8 Fix to use API to check for command 2025-06-12 01:52:48 +03:00
Ilia Ross
bae4af7490 Fix not to depend on the path 2025-06-11 23:53:32 +03:00
Ilia Ross
bfd2bfbc11 Update changelog for 2.402 2025-06-09 00:46:51 +03:00
Ilia Ross
8de7fde8bb Fix license 2025-06-08 21:03:36 +03:00
Ilia Ross
e5e8cde28e Fix support for old RPM module name prefixes 2025-06-08 18:02:12 +03:00
Ilia Ross
09d0b26aea Add module list flag support when building modules 2025-06-06 22:41:05 +03:00
Ilia Ross
87ba4dd181 Add minimal list of modules in a separate file 2025-06-05 23:47:48 +03:00
Ilia Ross
282b28da5e Fix to use new file names for modes 2025-06-05 23:38:46 +03:00
Ilia Ross
d519c4099f Add missing "webmincron" module to the core 2025-06-05 03:23:48 +03:00
Ilia Ross
0be73ac433 Add missing "servers" module to the core 2025-06-05 03:07:17 +03:00
Ilia Ross
b0c029887f Add missing modules for core 2025-06-05 03:02:37 +03:00
Ilia Ross
ce16f80848 Add support for building on given list of modules 2025-06-05 02:56:18 +03:00
Ilia Ross
cc407bc1c3 Fix to sort alphabetically default modules list 2025-06-05 00:28:05 +03:00
Ilia Ross
8e5633d9af Fix provides 2025-06-04 23:01:08 +03:00
Ilia Ross
125c3865a3 Add forgot form link in PAM for Usermin 2025-06-03 21:51:40 +03:00
Ilia Ross
9bfe56f127 Fix to support cross theme calls for forgotten form 2025-06-03 21:49:20 +03:00
Ilia Ross
c3545cf836 Update changelog (once again)
[no-build]
2025-06-03 18:13:54 +03:00
Ilia Ross
16c3030bb4 Update changelog
[no-build]
2025-06-03 17:58:31 +03:00
Ilia Ross
b6b803fe58 Fix alert content to be wrapped into span element 2025-06-03 15:30:01 +03:00
Ilia Ross
b0c89fe440 Fix to rename to get_webmin_base_url and add clearer comment about the sub 2025-06-03 02:01:07 +03:00
Ilia Ross
c1545a5a5e Fix to factor out code for getting Webmin login link 2025-06-03 01:47:11 +03:00
Ilia Ross
addd0a431c Fix not to set standard ports in URL for forgot form 2025-06-03 01:32:22 +03:00
Ilia Ross
0e7121aafc Fix missing webprefix 2025-06-02 15:02:43 +03:00
Ilia Ross
b48a24dfb6 Add message about Webmin for remote callers 2025-06-02 14:59:31 +03:00
Ilia Ross
cf22fb1ea3 Fix Usermin authentication page (once again)
This reverts commit 5d586597f5.
2025-06-02 13:16:33 +03:00
Ilia Ross
af73be4d1e Fix to place forgotten password options higher up for consistency 2025-06-02 13:03:11 +03:00
Ilia Ross
5d586597f5 Fix header name 2025-06-02 12:59:36 +03:00
Jamie Cameron
fd75a63570 Add forgotten password support to the usermin login page 2025-06-01 22:24:07 -07:00
Jamie Cameron
fdba1ad005 Minor version bump 2025-06-01 16:50:59 -07:00
Ilia Ross
89d32c1ff5 Update changelog for 2.401 2025-06-02 02:02:44 +03:00
Jamie Cameron
d41b2d70e7 Merge pull request #2487 from webmin/dev/password-recovery-link-always-show-if-enabled
Fix to always show password recovery link if enabled
2025-06-01 13:49:42 -07:00
Ilia Ross
d8409f8dac Fix to always show password recovery link if enabled 2025-06-01 12:24:05 +03:00
Ilia Ross
2d5768a612 Fix to speed up checking domains and users 2025-06-01 10:24:05 +03:00
Jamie Cameron
77b2be8202 Merge pull request #2486 from webmin/dev/password-reset-mail-user
Add support to reset password for Virtualmin mail users
2025-05-31 18:27:53 -07:00
Ilia Ross
97b4b046fc Fix to print message depending on the user 2025-06-01 02:07:41 +03:00
Ilia Ross
84fb582e2a Fix to make language more appropriate for any kind of user rather than specifically a Webmin user 2025-06-01 00:38:41 +03:00
Ilia Ross
e5f67a2394 Add support to reset password for Virtualmin mail users 2025-05-31 23:40:39 +03:00
Jamie Cameron
c2c33130ab Merge branch 'master' of github.com:webmin/webmin 2025-05-31 08:47:40 -07:00
Jamie Cameron
947d8e3f05 Safe users cannot send email 2025-05-31 08:47:30 -07:00
Ilia Ross
f3088ad7d0 Fix a bug that prevented the uninstall script from running 2025-05-31 14:53:16 +03:00
Ilia Ross
d51076b219 Fix to remove breaks from obsolete is it isn't correct way 2025-05-30 23:47:37 +03:00
Ilia Ross
01b07559f8 Fix cumulative deb_obsoletes to also break 2025-05-30 23:01:58 +03:00
Jamie Cameron
9d2f906439 Session ID is too sensitive to every safely include in email 2025-05-30 12:28:28 -07:00
Ilia Ross
0334d55da1 Update translations 2025-05-30 21:39:30 +03:00
Ilia Ross
40d27ad53e Fix language manager to correctly handle Farsi
* Something has changed on Google Translator side or maybe even a bug
2025-05-30 21:38:09 +03:00
Ilia Ross
695c78f631 Fix previously broken Farsi translations 2025-05-30 21:36:00 +03:00
Jamie Cameron
967018828a Merge branch 'master' of github.com:webmin/webmin 2025-05-30 09:23:51 -07:00
Jamie Cameron
efe99ddd80 Improve checks for cron job existence 2025-05-30 09:23:42 -07:00
Ilia Ross
464f4eb3e2 Fix join character for Debian module maker 2025-05-30 16:55:36 +03:00
Ilia Ross
60d4eadcd1 Fix to re-arrange flags order and script's help 2025-05-30 16:45:04 +03:00
Ilia Ross
784435d3ca Fix to drop --requires flag as suppressed by module's rpm_requires flag 2025-05-30 16:44:38 +03:00
Ilia Ross
b04f0a5160 Update make module to separate between modules and packages (DEB) 2025-05-30 16:25:45 +03:00
Ilia Ross
28ba2ea754 Update make module to separate between modules and packages 2025-05-30 14:44:11 +03:00
Ilia Ross
be436183cf Add new package preferences API to correctly handle dependent repos 2025-05-30 00:41:00 +03:00
Ilia Ross
60c66764cb Add support for multi-package pins
https://forum.virtualmin.com/t/debian-12-5-arm-email-stuck-in-mail-cue/133521/15
2025-05-29 19:43:02 +03:00
Ilia Ross
0a0f0389c3 Fix checking account lock status #2484 2025-05-29 16:59:31 +03:00
Timo Gurr
76bf648f94 Disable SSL/TLS renegotiation
Commit 2b77e8f020 allows to disable
TLS < 1.3, extend it to always disable SSL/TLS renegotiation even
for this older TLS protocols.

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

14
.editorconfig Normal file
View File

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

View File

@@ -1,5 +1,55 @@
## Changelog
#### 2.500 (September 4, 2025)
* Add support for the Webmin webserver to work in both HTTP and HTTPS modes at the same time
* Add distinct warning to the login page if the connection is not secure
* Add support for timeouts in temporary rules in FirewallD module
* Add support for the new Dovecot version 2.4
* Add support for MariaDB version 12 #2522
* Add support for IMAP through a local command for Usermin
* Add latest SSLeay support for redirects to SSL work
* Add improvements to "Bootup and Shutdown" module for _systemd_ systems
* Add field for secondary server key in BIND module
* Add reversible encryption helpers API
* Add API to display relative dates
* Add API to mask sensitive text, like displayed passwords, unless hovered over
* Add status monitor for PHP FPM #2499
* Add support for DNF5 format in the "Software Packages" module
* Add support for redirecting to the enforced domain when the `musthost_redirect` directive is set
* Add option to customize the SMTP login for scheduled background monitoring in the "System and Server Status" module
* Change to show relative dates in "Webmin Users: Current Login Sessions" and "Webmin Actions Log: Search Results" pages
* Change "Last Logins" on the dashboard to show usernames, relative dates, and all users from the past 3 days
* Change to always enable HSTS by default
* Fix MySQL/MariaDB to remove obsolete `set-variable` options that break modern config files #2497
* Fix download link in table rows in MySQL/MariaDB module
* Fix module not to fail on old MySQL 5.5
* Update the Authentic theme to the latest version with various improvements and fixes:
- Add support to automatically set the color palette based on OS or browser preferences
- Add improvements to tooltips in dark palette
- Change the default shortcut key for toggling the light/dark palette
- Change the default shortcut key for toggling right slider
- Change wording to use "shortcut" instead of "hotkey"
- Change the default maximum column width
- Fix navigation menu load in proxy mode #2502
- Fix navigation menu to always stay in sync with the product switch
- Fix sporadic issue where the navigation menu disappeared and the content page was shifted
- Fix info alert text color and button color in the dark palette
- Fix styling of checkboxes and radios for backup and restore pages in Virtualmin
- Fix styling for extra backup destinations in Virtualmin
- Fix advanced schedule display in the cron chooser in Virtualmin
[More details...](https://github.com/webmin/authentic-theme/releases/tag/25.00)
#### 2.402 (June 16, 2025)
* Update the Authentic theme to the latest version with various fixes and improvements
* Fix support for EL10-based systems
#### 2.401 (June 2, 2025)
* Add forgotten password recovery support for Virtualmin mailbox users
* Add forgotten password recovery support in Usermin
* Fix account lock status check in MySQL/MariaDB module that was blocking new database user creation #2484
* Fix to prevent safe users from sending emails
* Fix to always show password recovery link if enabled
#### 2.400 (May 25, 2025)
* Add built-in support for forgotten password recovery
* Add support for SSL certificates and DNS over TLS in the BIND module
@@ -112,7 +162,7 @@
* Update the Authentic theme to the latest version with various fixes and improvements
#### 2.201 (July 24, 2024)
* Fix real-time monitoring not updating graphs in the Dashboard [#2222](https://github.com/webmin/webmin/issues/2222)
* Fix real-time monitoring not updating graphs in the dashboard [#2222](https://github.com/webmin/webmin/issues/2222)
* Fix Terminal module to work correctly with _sudo_-capable users [#2223](https://github.com/webmin/webmin/issues/2223)
#### 2.200 (July 21, 2024)
@@ -225,7 +275,7 @@
* Add support for editing ACLs in File Manager
* Add support to configure SSL connection for MySQL/MariaDB module
* Add support for compressed backups in PostgreSQL module
* Add support for displaying inodes too in Disk Usage in the Dashboard
* Add support for displaying inodes too in Disk Usage in the dashboard
* Add better support for CloudLinux
* Fix to always default to RSA key type in Let's Encrypt requests
* Fix setup repository script for Oracle
@@ -233,7 +283,7 @@
* Fix support for SpamAssassin 4
* Fix to use system default hashing format for `htpasswd` file
* Fix FastRPC issues
* Update the Authentic theme to the latest version, with sped-up Dashboard performance
* Update the Authentic theme to the latest version, with sped-up dashboard performance
#### 2.013 (January 19, 2023)
* Fix Authentic theme issue with error handling

File diff suppressed because one or more lines are too long

View File

@@ -7,6 +7,7 @@ edit_readonly=This Webmin user should not be edited as it is managed by the $1 m
edit_rights=Webmin حقوق وصول المستخدم
edit_cloneof=استنساخ المستخدم Webmin
edit_real=الاسم الحقيقي
edit_email=البريد الإلكتروني للتواصل
edit_group=عضو في المجموعة
edit_pass=كلمه السر
edit_same=نفس يونيكس
@@ -60,6 +61,7 @@ edit_selall=اختر الكل
edit_invert=اختيار المقلوب
edit_hide=إخفاء غير المستخدمة
edit_switch=التبديل إلى المستخدم
edit_forgot=إرسال رابط إعادة تعيين كلمة المرور
edit_return=Webmin المستخدم
edit_return2=مجموعة Webmin
edit_rbacdeny=وضع الوصول RBAC
@@ -118,6 +120,7 @@ save_edays=لا أيام للسماح المحدد
save_ehours=أوقات مفقودة أو غير صالحة للسماح بها
save_ehours2=يجب أن يكون وقت البدء للسماح قبل النهاية
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=لا يمكن أن يحتوي عنوان البريد الإلكتروني على الحرف :
cert_title=طلب شهادة
cert_msg=يسمح لك هذا النموذج بطلب شهادة عميل SSL والتي سيتم استخدامها في المستقبل لمنحك حق الوصول إلى Webmin بدلاً من اسم المستخدم وكلمة المرور الخاصة بك. هذا أكثر أمانًا ، ولكن نظرًا لأن المصادقة تلقائية ، فلن تتمكن من التبديل إلى مستخدم مختلف عند استخدام الشهادة.
@@ -148,6 +151,9 @@ log_sync=تغيير تزامن المستخدم يونيكس
log_sql=تم تغيير قاعدة بيانات المستخدم والمجموعة
log_twofactor=Enrolled user $1 with two-factor provider $2
log_onefactor=Dis-enrolled user $1 for two-factor authentication
log_forgot_send=تم إرسال بريد إلكتروني لإعادة تعيين كلمة المرور للمستخدم $1 إلى $2
log_forgot_reset=إعادة تعيين كلمة المرور للمستخدم $1 مع البريد الإلكتروني $2
log_forgot_admin=أرسل المسؤول بريدًا إلكترونيًا لإعادة تعيين كلمة المرور للمستخدم $1 إلى $2
gedit_ecannot=غير مسموح لك بتحرير المجموعات
gedit_title=تحرير Webmin Group
@@ -363,3 +369,20 @@ sql_timeout_def=استخدام مهلة الاتصال الافتراضية (60
sql_timeout_for=إغلاق الاتصالات المخبأة بعد
sql_timeout_secs=ثواني
sql_etimeout=يجب أن تكون مهلة الاتصال المخزنة مؤقتًا رقمًا
forgot_title=إرسال رابط إعادة تعيين كلمة المرور
forgot_err=فشل في إرسال رابط إعادة تعيين كلمة المرور
forgot_header=تفاصيل رابط إعادة تعيين كلمة المرور
forgot_user=إعادة تعيين كلمة المرور للمستخدم
forgot_email=طريقة توصيل الرابط
forgot_email_def=عرض الرابط في Webmin
forgot_email_sel=أرسل الرابط عبر البريد الإلكتروني إلى
forgot_send=إرسال الرابط
forgot_desc=تتيح لك هذه الصفحة إنشاء أو إرسال رابط لاختيار كلمة مرور جديدة لمستخدم Webmin إلى أي عنوان بريد إلكتروني. انتبه جيدًا إلى عنوان البريد الإلكتروني الذي تُرسل إليه هذا الرابط، لأنه سيمنحك فعليًا حق الوصول الكامل إلى بيانات تسجيل الدخول إلى Webmin!
forgot_adminmsg=لقد تلقيت هذا البريد الإلكتروني من مسؤول نظام Webmin في $3، لتسجيل الدخول $1.\n\nإذا كنت ترغب في المتابعة بإعادة تعيين كلمة المرور، فاتبع هذا الرابط:\n$2
forgot_sending=إرسال بريد إلكتروني لإعادة تعيين كلمة المرور لـ $2 إلى $1 ..
forgot_sent=.. مرسل
forgot_link=يمكن استخدام الرابط أدناه لإعادة تعيين كلمة مرور Webmin لـ $1 للدقائق $2 القادمة :
forgot_enosudo=Sudo غير متوفر على هذا النظام!
forgot_ecansudo=المستخدم الذي تم إدخاله لا يملك صلاحيات sudo
forgot_eunix=المستخدم القادر على استخدام sudo غير موجود!

View File

@@ -1,16 +1,23 @@
index_screate=Създайте нов безопасен потребител.
edit_title3=Създайте безопасен потребител на Webmin
edit_email=Контактен имейл
edit_locale=локал
edit_forgot=Изпрати линк за нулиране на паролата
edit_safe=Ниво на привилегии
edit_safe0=неограничен
edit_safe1=Само безопасни модули
edit_unsafe=Нулиране до неограничено
save_eunixname=Потребителското име '$1' не е потребител на Unix и затова не може да се използва в безопасен режим
save_eemail=Имейл адресът не може да съдържа символа :
acl_locale=Може ли да промени локала?
log_forgot_send=Изпратен имейл за нулиране на паролата за потребител $1 до $2
log_forgot_reset=Нулиране на паролата за потребител $1 с имейл $2
log_forgot_admin=Администраторът изпрати имейл за нулиране на паролата за потребител $1 до $2
sync_modify=Преименувайте съответстващия потребител на Webmin, когато потребител на Unix е преименуван.
sessions_all=Всички сесии..
@@ -22,3 +29,20 @@ sql_timeout_def=Използвайте времето за изчакване н
sql_timeout_for=Затворете кешираните връзки след
sql_timeout_secs=секунди
sql_etimeout=Времето за изчакване на кешираната връзка трябва да бъде число
forgot_title=Изпрати линк за нулиране на паролата
forgot_err=Изпращането на линк за нулиране на паролата не бе успешно
forgot_header=Подробности за връзката за нулиране на паролата
forgot_user=Нулиране на паролата за потребителя
forgot_email=Метод за доставка на връзки
forgot_email_def=Показване на линк в Webmin
forgot_email_sel=Изпрати линк по имейл до
forgot_send=Изпрати линк
forgot_desc=Тази страница ви позволява да генерирате или изпратите линк, който може да се използва за избор на нова парола за потребител на Webmin, до произволен имейл адрес. Внимавайте на кой адрес изпращате този линк, тъй като той ефективно ще ви предостави пълен достъп до входа в Webmin!
forgot_adminmsg=Получавате този имейл от администратора на системата Webmin на адрес $3, за вход $1.\n\nАко искате да продължите с нулирането на паролата, следвайте тази връзка:\n$2
forgot_sending=Изпраща се имейл за нулиране на паролата за $2 до $1 ..
forgot_sent=.. изпратен
forgot_link=Връзката по-долу може да се използва за нулиране на паролата за Webmin за $1 за следващите $2 минути :
forgot_enosudo=Sudo не е наличен на тази система!
forgot_ecansudo=Въведеният потребител няма sudo разрешения
forgot_eunix=Въведеният потребител, който поддържа sudo, не съществува!

View File

@@ -1,16 +1,23 @@
index_screate=Creeu un nou usuari segur.
edit_title3=Creeu un usuari Webmin segur
edit_email=Correu electrònic de contacte
edit_locale=Localització
edit_forgot=Enviar enllaç de restabliment de contrasenya
edit_safe=Nivell de privilegi
edit_safe0=Sense restriccions
edit_safe1=Només mòduls segurs
edit_unsafe=Restableix-lo a sense restriccions
save_eunixname=El nom d'usuari '$1' no és un usuari Unix, per la qual cosa no es pot utilitzar en mode segur
save_eemail=L'adreça de correu electrònic no pot contenir el caràcter :
acl_locale=Es pot canviar la configuració regional?
log_forgot_send=S'ha enviat un correu electrònic de restabliment de contrasenya per a l'usuari $1 a $2
log_forgot_reset=Restableix la contrasenya per a l'usuari $1 amb el correu electrònic $2
log_forgot_admin=L'administrador ha enviat un correu electrònic de restabliment de contrasenya per a l'usuari $1 a $2
sync_modify=Canvieu el nom de l'usuari Webmin coincident quan es canvia el nom d'un usuari Unix.
sessions_all=Totes les sessions..
@@ -22,3 +29,20 @@ sql_timeout_def=Utilitza el temps d'espera de connexió predeterminat (60 segons
sql_timeout_for=Tanqueu les connexions a la memòria cau després
sql_timeout_secs=segons
sql_etimeout=El temps d'espera de la connexió a la memòria cau ha de ser un número
forgot_title=Enviar enllaç de restabliment de contrasenya
forgot_err=No s'ha pogut enviar l'enllaç de restabliment de la contrasenya
forgot_header=Detalls de l'enllaç de restabliment de contrasenya
forgot_user=Restablir la contrasenya de l'usuari
forgot_email=Mètode de lliurament d'enllaços
forgot_email_def=Mostra l'enllaç a Webmin
forgot_email_sel=Enviar enllaç per correu electrònic a
forgot_send=Enviar enllaç
forgot_desc=Aquesta pàgina us permet generar o enviar un enllaç que es pot utilitzar per seleccionar una nova contrasenya per a un usuari de Webmin a qualsevol adreça de correu electrònic. Aneu amb compte a quina adreça envieu aquest enllaç, ja que us atorgarà accés complet a l'inici de sessió de Webmin!
forgot_adminmsg=Heu rebut aquest correu electrònic de l'administrador del sistema Webmin a $3, per a l'inici de sessió $1.\n\nSi voleu continuar amb el restabliment de la contrasenya, seguiu aquest enllaç:\n$2
forgot_sending=Enviant un correu electrònic de restabliment de contrasenya de $2 a $1. ..
forgot_sent=.. enviat
forgot_link=L'enllaç següent es pot utilitzar per restablir la contrasenya de Webmin per a $1 durant els propers $2 minuts :
forgot_enosudo=El Sudo no està disponible en aquest sistema!
forgot_ecansudo=L'usuari introduït no té permisos de sudo
forgot_eunix=L'usuari amb capacitat per a sudo introduït no existeix!

View File

@@ -5,6 +5,7 @@ index_eulist=Seznam uživatelů se nepodařilo uvést: $1
index_eglist=Seznam se nezdařil: $1
edit_title3=Vytvořte bezpečného webmin uživatele
edit_email=Kontaktní e-mail
edit_twofactor=Typ dvoufaktorové autentizace
edit_twofactorprov=Použití poskytovatele $1 s ID $2
edit_twofactorcancel=Odstraňte požadavek na dvoufaktorovou autentizaci
@@ -15,6 +16,7 @@ edit_nochange=Vynutit dny změny hesla?
edit_egone=Vybraný uživatel již neexistuje!
edit_overlay=Překrytí osobního motivu
edit_overlayglobal=Žádné - použijte výchozí nastavení motivu
edit_forgot=Odeslat odkaz pro obnovení hesla
edit_global=Oprávnění pro všechny moduly
edit_temppass=Vynutit změnu při příštím přihlášení
edit_proto=Typ úložiště
@@ -30,6 +32,7 @@ edit_unsafe=Obnovit na neomezené
save_eunixname=Uživatelské jméno '$1' není uživatel Unixu, a proto jej nelze použít v nouzovém režimu
save_eoverlay=Překrytí motivu nelze vybrat, pokud není motivem
save_etemp=Možnost vynutit změnu hesla při příštím přihlášení nelze použít, pokud není povoleno <a href='$1'>vyzývající uživatele k zadání nových hesel</a>
save_eemail=E-mailová adresa nesmí obsahovat znak :
delete_eanonuser=Tento uživatel je používán pro anonymní přístup k modulu
@@ -43,6 +46,9 @@ log_joingroup=Přidáno $1 Webmin users do skupiny $2
log_sql=Změněna databáze uživatelů a skupin
log_twofactor=Registrovaný uživatel $1 s dvoufaktorovým poskytovatelem $2
log_onefactor=Registrovaný uživatel $1 pro dvoufaktorové ověření
log_forgot_send=E-mail pro resetování hesla odeslán uživateli $1 uživateli $2
log_forgot_reset=Obnovení hesla pro uživatele $1 s e-mailem $2
log_forgot_admin=Administrátor odeslal e-mail s resetováním hesla pro uživatele $1 uživateli $2
gedit_desc=Popis skupiny
gedit_egone=Vybraná skupina již neexistuje!
@@ -161,3 +167,20 @@ twofactor_failed=.. zápis se nezdařil: $1
twofactor_done=.. kompletní. Vaše ID u tohoto poskytovatele je <tt>$1</tt>.
twofactor_setup=V tomto systému zatím není aktivována dvoufaktorová autentizace, ale lze ji zapnout pomocí modulu <a href='$1'>Webmin Configuration</a>.
twofactor_ebutton=Nebylo kliknuto žádné tlačítko!
forgot_title=Odeslat odkaz pro obnovení hesla
forgot_err=Odeslání odkazu pro obnovení hesla se nezdařilo
forgot_header=Podrobnosti o odkazu pro resetování hesla
forgot_user=Obnovit heslo pro uživatele
forgot_email=Způsob doručení odkazu
forgot_email_def=Zobrazit odkaz ve Webminu
forgot_email_sel=Odeslat odkaz e-mailem na
forgot_send=Odeslat odkaz
forgot_desc=Tato stránka vám umožňuje vygenerovat nebo odeslat odkaz, který lze použít k výběru nového hesla pro uživatele Webminu, na libovolnou e-mailovou adresu. Buďte opatrní, na kterou adresu tento odkaz odesíláte, protože vám v podstatě poskytne plný přístup k přihlášení do Webminu!
forgot_adminmsg=Tento e-mail vám byl zaslán od administrátora systému Webmin na adrese $3 pro přihlášení $1.\n\nPokud chcete pokračovat v resetování hesla, klikněte na tento odkaz:\n$2
forgot_sending=Odesílání e-mailu pro resetování hesla pro $2 na $1 ..
forgot_sent=.. odesláno
forgot_link=Níže uvedený odkaz lze použít k resetování hesla Webmin pro $1 na následujících $2 minut :
forgot_enosudo=Sudo není na tomto systému k dispozici!
forgot_ecansudo=Zadaný uživatel nemá oprávnění sudo
forgot_eunix=Zadaný uživatel s podporou sudo neexistuje!

View File

@@ -1,16 +1,23 @@
index_screate=Opret en ny sikker bruger.
edit_title3=Opret sikker webmin-bruger
edit_email=Kontakt e-mail
edit_locale=Lokalitet
edit_forgot=Send link til nulstilling af adgangskode
edit_safe=Privilegieniveau
edit_safe0=Ubegrænset
edit_safe1=Kun sikre moduler
edit_unsafe=Nulstil til ubegrænset
save_eunixname=Brugernavnet '$1' er ikke en Unix-bruger, og kan derfor ikke bruges i sikker tilstand
save_eemail=E-mailadressen må ikke indeholde tegnet:
acl_locale=Kan du ændre lokalitet?
log_forgot_send=Sendte e-mail om nulstilling af adgangskode for bruger $1 til $2
log_forgot_reset=Nulstil adgangskode for bruger $1 med e-mail $2
log_forgot_admin=Admin sendte en e-mail med nulstilling af adgangskode for bruger $1 til $2
sync_modify=Omdøb den matchende Webmin-bruger, når en Unix-bruger omdøbes.
sessions_all=Alle sessioner..
@@ -22,3 +29,20 @@ sql_timeout_def=Brug standardforbindelse timeout (60 sekunder)
sql_timeout_for=Luk cachelagrede forbindelser efter
sql_timeout_secs=sekunder
sql_etimeout=Timeout for cachelagret forbindelse skal være et tal
forgot_title=Send link til nulstilling af adgangskode
forgot_err=Kunne ikke sende link til nulstilling af adgangskode
forgot_header=Detaljer om link til nulstilling af adgangskode
forgot_user=Nulstil adgangskode for bruger
forgot_email=Linkleveringsmetode
forgot_email_def=Vis link i Webmin
forgot_email_sel=Send link via e-mail til
forgot_send=Send link
forgot_desc=Denne side giver dig mulighed for at generere eller sende et link, der kan bruges til at vælge en ny adgangskode til en Webmin-bruger, til en hvilken som helst e-mailadresse. Vær forsigtig med, hvilken adresse du sender dette link til, da det effektivt vil give fuld adgang til Webmin-login!
forgot_adminmsg=Du modtager denne e-mail fra administratoren af Webmin-systemet på $3, for login $1.\n\nHvis du vil fortsætte med at nulstille adgangskoden, skal du følge dette link:\n$2
forgot_sending=Sender e-mail om nulstilling af adgangskode for $2 til $1 ..
forgot_sent=.. sendt
forgot_link=Linket nedenfor kan bruges til at nulstille Webmin-adgangskoden for $1 i de næste $2 minutter :
forgot_enosudo=Sudo er ikke tilgængelig på dette system!
forgot_ecansudo=Den indtastede bruger har ikke sudo-tilladelser
forgot_eunix=Den indtastede sudo-kompatible bruger findes ikke!

View File

@@ -1,16 +1,23 @@
index_screate=Δημιουργήστε ένα νέο ασφαλές χρήστη.
edit_title3=Δημιουργία ασφαλούς χρήστη Webmin
edit_email=Ηλεκτρονική διεύθυνση επικοινωνίας
edit_locale=Μικρός λοβός
edit_forgot=Αποστολή συνδέσμου επαναφοράς κωδικού πρόσβασης
edit_safe=Επίπεδο προνομίου
edit_safe0=Απεριόριστος
edit_safe1=Μόνο ασφαλή μονάδες
edit_unsafe=Επαναφορά σε απεριόριστη
save_eunixname=Το όνομα χρήστη '$1' δεν είναι χρήστης Unix και έτσι δεν μπορεί να χρησιμοποιηθεί σε ασφαλή λειτουργία
save_eemail=Η διεύθυνση ηλεκτρονικού ταχυδρομείου δεν μπορεί να περιέχει τον χαρακτήρα :
acl_locale=Μπορεί να αλλάξει τοπική;
log_forgot_send=Αποστολή email επαναφοράς κωδικού πρόσβασης για τον χρήστη $1 στον χρήστη $2
log_forgot_reset=Επαναφορά κωδικού πρόσβασης για τον χρήστη $1 με email $2
log_forgot_admin=Ο διαχειριστής έστειλε email επαναφοράς κωδικού πρόσβασης για τον χρήστη $1 στον χρήστη $2
sync_modify=Μετονομάστε τον αντίστοιχο χρήστη Webmin όταν μετονομάζεται ένας χρήστης Unix.
sessions_all=Όλες οι συνεδρίες..
@@ -22,3 +29,20 @@ sql_timeout_def=Χρήση προεπιλεγμένου χρονικού ορί
sql_timeout_for=Κλείστε τις προσωρινά αποθηκευμένες συνδέσεις μετά
sql_timeout_secs=δευτερόλεπτα
sql_etimeout=Το χρονικό όριο λήξης της προσωρινής αποθήκευσης πρέπει να είναι αριθμός
forgot_title=Αποστολή συνδέσμου επαναφοράς κωδικού πρόσβασης
forgot_err=Αποτυχία αποστολής συνδέσμου επαναφοράς κωδικού πρόσβασης
forgot_header=Λεπτομέρειες συνδέσμου επαναφοράς κωδικού πρόσβασης
forgot_user=Επαναφορά κωδικού πρόσβασης για τον χρήστη
forgot_email=Μέθοδος παράδοσης συνδέσμου
forgot_email_def=Εμφάνιση συνδέσμου στο Webmin
forgot_email_sel=Αποστολή συνδέσμου μέσω email στο
forgot_send=Αποστολή συνδέσμου
forgot_desc=Αυτή η σελίδα σάς επιτρέπει να δημιουργήσετε ή να στείλετε έναν σύνδεσμο που μπορεί να χρησιμοποιηθεί για την επιλογή ενός νέου κωδικού πρόσβασης για έναν χρήστη Webmin σε οποιαδήποτε διεύθυνση email. Να είστε προσεκτικοί σε ποια διεύθυνση στέλνετε αυτόν τον σύνδεσμο, καθώς ουσιαστικά θα παρέχει πλήρη πρόσβαση στα στοιχεία σύνδεσης του Webmin!
forgot_adminmsg=Λαμβάνετε αυτό το email από τον διαχειριστή του συστήματος Webmin στο $3, για τη σύνδεση $1.\n\nΕάν θέλετε να προχωρήσετε στην επαναφορά του κωδικού πρόσβασης, ακολουθήστε αυτόν τον σύνδεσμο:\n$2
forgot_sending=Αποστολή email επαναφοράς κωδικού πρόσβασης για $2 σε $1 ..
forgot_sent=.. έστειλε
forgot_link=Ο παρακάτω σύνδεσμος μπορεί να χρησιμοποιηθεί για την επαναφορά του κωδικού πρόσβασης Webmin για το $1 για τα επόμενα $2 λεπτά :
forgot_enosudo=Το Sudo δεν είναι διαθέσιμο σε αυτό το σύστημα!
forgot_ecansudo=Ο χρήστης που καταχωρήθηκε δεν έχει δικαιώματα sudo
forgot_eunix=Ο χρήστης με δυνατότητα sudo που καταχωρήσατε δεν υπάρχει!

View File

@@ -355,6 +355,7 @@ unix_utable=Allowed Unix users
sessions_title=Current Login Sessions
sessions_id=Session ID
sessions_user=Webmin user
sessions_login_ago=Last active ago
sessions_login=Last active at
sessions_host=IP address
sessions_lview=View logs..

View File

@@ -1,18 +1,25 @@
index_screate=Crea un nuevo usuario seguro.
edit_title3=Crear usuario seguro de Webmin
edit_email=Correo electrónico de contacto
edit_locale=Lugar
edit_forgot=Enviar enlace de restablecimiento de contraseña
edit_safe=Nivel de privilegio
edit_safe0=Irrestricto
edit_safe1=Solo módulos seguros
edit_unsafe=Restablecer a sin restricciones
save_eunixname=El nombre de usuario '$1' no es un usuario de Unix, por lo que no se puede usar en modo seguro
save_eemail=La dirección de correo electrónico no puede contener el carácter :
delete_eanonuser=Este usuario se está utilizando para acceder al módulo anónimo
acl_locale=¿Se puede cambiar de ubicación?
log_forgot_send=Se envió un correo electrónico de restablecimiento de contraseña para el usuario $1 a $2
log_forgot_reset=Restablecer la contraseña del usuario $1 con el correo electrónico $2
log_forgot_admin=El administrador envió un correo electrónico de restablecimiento de contraseña para el usuario $1 a $2
sync_modify=Cambie el nombre del usuario de Webmin coincidente cuando se cambie el nombre de un usuario de Unix.
sessions_actions=Comportamiento..
@@ -35,3 +42,20 @@ sql_timeout_def=Usar tiempo de espera de conexión predeterminado (60 segundos)
sql_timeout_for=Cerrar las conexiones en caché después
sql_timeout_secs=segundos
sql_etimeout=El tiempo de espera de la conexión en caché debe ser un número
forgot_title=Enviar enlace de restablecimiento de contraseña
forgot_err=No se pudo enviar el enlace de restablecimiento de contraseña
forgot_header=Detalles del enlace de restablecimiento de contraseña
forgot_user=Restablecer contraseña para el usuario
forgot_email=Método de entrega del enlace
forgot_email_def=Mostrar enlace en Webmin
forgot_email_sel=Enviar enlace por correo electrónico a
forgot_send=Enviar enlace
forgot_desc=Esta página le permite generar o enviar un enlace a cualquier dirección de correo electrónico para seleccionar una nueva contraseña para un usuario de Webmin. Tenga cuidado con la dirección a la que envía este enlace, ya que otorgará acceso completo al inicio de sesión de Webmin
forgot_adminmsg=Estás recibiendo este correo electrónico del administrador del sistema Webmin en $3, para el inicio de sesión $1.\n\nSi deseas continuar con el restablecimiento de la contraseña, sigue este enlace:\n$2
forgot_sending=Enviando correo electrónico de restablecimiento de contraseña de $2 a $1 ..
forgot_sent=.. enviado
forgot_link=El siguiente enlace se puede utilizar para restablecer la contraseña de Webmin para $1 durante los próximos $2 minutos :
forgot_enosudo=¡Sudo no está disponible en este sistema!
forgot_ecansudo=El usuario ingresado no tiene permisos de sudo
forgot_eunix=¡El usuario con capacidad sudo ingresado no existe!

View File

@@ -6,6 +6,7 @@ index_eulist=Ezin izan da erabiltzaileak zerrendatu: $1
index_eglist=Huts egin du taldeen zerrendak: $1
edit_title3=Sortu Webmin erabiltzaile segurua
edit_email=Harremanetarako helbide elektronikoa
edit_twofactor=Bi faktoreen autentikazio mota
edit_twofactorprov=Hornitzailea $1 erabiliz $2
edit_twofactorcancel=Kendu bi faktoreen autentikazio baldintza
@@ -14,6 +15,7 @@ edit_twofactoradd=Gaitu erabiltzailearentzako bi faktore
edit_locale=Tokikoa
edit_egone=Aukeratutako erabiltzailea ez da existitzen!
edit_overlay=Gai pertsonalen gainjartzea
edit_forgot=Pasahitza berrezartzeko esteka bidali
edit_proto=Biltegiratze mota
edit_proto_mysql=MySQL datu-basea
edit_proto_postgresql=PostgreSQL datu-basea
@@ -26,6 +28,7 @@ edit_unsafe=Berrezarri mugarik gabekoetara
save_eunixname='$1' erabiltzailea ez da Unix erabiltzailea eta, beraz, ezin da modu seguruan erabili
save_etemp=Pasahitz aldaketa hurrengo behartzeko aukera ezin da erabili <a href='$1'>erabiltzaileek pasahitz berriak sartzeko eskatuko duten</a> gaituta ez badago
save_eemail=Helbide elektronikoak ezin du izan: karakterea
delete_eanonuser=Erabiltzaile hau modulu anonimoetarako sarbidea erabiltzen ari da
@@ -39,6 +42,9 @@ log_joingroup=Gehitu dira $1 Webmin erabiltzaileak $2
log_sql=Erabiltzaileen eta taldeen datu baseak aldatu dira
log_twofactor=Matrikulatutako erabiltzailea $1 bi faktore hornitzaile $2
log_onefactor=Bi erabiltzaileak bi faktoreen autentikaziorako matrikulatutako erabiltzailea $1
log_forgot_send=$1etik $2ra bitarteko erabiltzailearentzako pasahitza berrezartzeko mezu elektronikoa bidali da
log_forgot_reset=Berrezarri $1 erabiltzailearen pasahitza, $2 helbide elektronikoarekin
log_forgot_admin=Administratzaileak $1 erabiltzailearentzako pasahitza berrezartzeko mezu elektronikoa bidali du $2 erabiltzaileari
gedit_desc=Taldearen deskribapena
gedit_egone=Hautatutako taldea ez dago jada!
@@ -156,3 +162,20 @@ twofactor_failed=.. matrikulazioak huts egin du: $1
twofactor_done=.. osatu. Hornitzaile honen IDa <tt>$1</tt> da.
twofactor_setup=Bi faktoreen autentikazioa ez da gaituta oraindik sistema honetan, baina <a href='$1'>Webmin Konfigurazioa</a> modulua erabilita aktibatu daiteke.
twofactor_ebutton=Ez da botoia sakatu!
forgot_title=Pasahitza berrezartzeko esteka bidali
forgot_err=Pasahitza berrezartzeko esteka bidaltzea huts egin da
forgot_header=Pasahitza berrezartzeko estekaren xehetasunak
forgot_user=Erabiltzailearen pasahitza berrezarri
forgot_email=Esteka bidaltzeko metodoa
forgot_email_def=Erakutsi esteka Webminen
forgot_email_sel=Bidali esteka posta elektronikoz helbide honetara:
forgot_send=Bidali esteka
forgot_desc=Orrialde honek Webmin erabiltzaile baten pasahitz berri bat edozein helbide elektronikotara hautatzeko erabil daitekeen esteka bat sortu edo bidaltzeko aukera ematen dizu. Kontuz ibili esteka hau zein helbidetara bidaltzen duzun, Webmin saioa hasteko sarbide osoa emango dizulako!
forgot_adminmsg=$3 helbideko Webmin sistemaren administratzailearengandik jaso duzu mezu elektroniko hau, $1 saioa hasteko.\n\nPasahitza berrezarri nahi baduzu, jarraitu esteka honi:\n$2
forgot_sending=$2-ren pasahitza berrezartzeko mezu elektronikoa $1-era bidaltzen. ..
forgot_sent=... bidalita
forgot_link=Beheko esteka erabil daiteke $1-en Webmin pasahitza hurrengo $2 minutuetarako berrezartzeko :
forgot_enosudo=Sudo ez dago eskuragarri sistema honetan!
forgot_ecansudo=Sartutako erabiltzaileak ez du sudo baimenik
forgot_eunix=Sartutako sudo gaitasuna duen erabiltzailea ez da existitzen!

View File

@@ -8,6 +8,7 @@ edit_title3=کاربر وبمین ایمن ایجاد کنید
edit_readonly=This Webmin user should not be edited as it is managed by the $1 module. <a href='$2'>Click here</a> to bypass this warning and edit the user anyway - but beware that any manual changes may be over-written!
edit_cloneof=کلونینگ کاربر وبمین
edit_real=اسم واقعی
edit_email=ایمیل تماس
edit_passlocked=Password has not been changed for $1 days - account locked!
edit_passmax=Password has not been changed for $1 days - must be changed at next login
edit_passold=Password was last changed $1 days ago
@@ -26,6 +27,7 @@ edit_nochange=روزهای تغییر رمز عبور را اجرا می کنی
edit_egone=کاربر انتخاب شده دیگر وجود ندارد!
edit_overlay=پوشش شخصی موضوع
edit_overlayglobal=هیچ یک - از پیش فرض های موضوعی استفاده نکنید
edit_forgot=ارسال لینک بازیابی رمز عبور
edit_global=مجوز برای همه ماژول ها
edit_templock=به طور موقت قفل شده است
edit_temppass=تغییر نیرو در ورود بعدی
@@ -58,6 +60,7 @@ save_edays=هیچ روز اجازه انتخاب وجود ندارد
save_ehours=بارهای نامعتبر یا نامعتبر است
save_ehours2=زمان شروع اجازه باید قبل از پایان باشد
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=آدرس ایمیل نمی‌تواند شامل کاراکتر : باشد
delete_eanonuser=این کاربر برای دسترسی به ماژول ناشناس استفاده می شود
@@ -78,6 +81,9 @@ log_sync=همگام سازی کاربر یونیکس تغییر کرده است
log_sql=بانک اطلاعاتی کاربر و گروه تغییر یافت
log_twofactor=Enrolled user $1 with two-factor provider $2
log_onefactor=Dis-enrolled user $1 for two-factor authentication
log_forgot_send=ایمیل بازنشانی رمز عبور برای کاربران $1 تا $2 ارسال شد
log_forgot_reset=بازنشانی رمز عبور برای کاربر $1 با ایمیل $2
log_forgot_admin=مدیر ایمیل بازنشانی رمز عبور را برای کاربران $1 تا $2 ارسال کرد
gedit_desc=توضیحات گروه
gedit_egone=گروه منتخب دیگر وجود ندارد!
@@ -153,7 +159,7 @@ pass_maxdays=روزهای قبل باید رمزعبور تغییر کند
pass_lockdays=روزها قبل از تغییر حساب قفل رمز عبور بدون تغییر
pass_nomaxdays=تغییر هرگز مورد نیاز نیست
pass_nolockdays=حساب هرگز قفل نیست
pass_nouser=گذرواژه‌های حاوی نام کاربری مجاز نیست؟
pass_nouser=رمزهای عبور حاوی نام کاربری را غیرفعال کنید؟
pass_nodict=کلمه عبور کلمه لغت را مجاز نمی دانید؟
pass_oldblock=تعداد کلمه عبورهای قدیمی برای رد کردن
pass_nooldblock=محدودیتی برای استفاده مجدد از گذرواژه وجود ندارد
@@ -255,3 +261,20 @@ twofactor_failed=.. enrollment failed : $1
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=هیچ دکمه ای کلیک نشد!
forgot_title=ارسال لینک بازیابی رمز عبور
forgot_err=ارسال لینک بازیابی رمز عبور ناموفق بود
forgot_header=جزئیات لینک بازنشانی رمز عبور
forgot_user=بازنشانی رمز عبور برای کاربر
forgot_email=روش تحویل لینک
forgot_email_def=نمایش لینک در وب‌مین
forgot_email_sel=ارسال لینک از طریق ایمیل به
forgot_send=ارسال لینک
forgot_desc=این صفحه به شما امکان می‌دهد لینکی ایجاد کنید یا آن را به هر آدرس ایمیلی ارسال کنید که می‌تواند برای انتخاب رمز عبور جدید برای کاربر وب‌مین استفاده شود. مراقب باشید که این لینک را به کدام آدرس ایمیل ارسال می‌کنید، زیرا عملاً دسترسی کامل به ورود به وب‌مین را اعطا می‌کند!
forgot_adminmsg=شما این ایمیل را از مدیر سیستم وب‌مین در $3، برای ورود به سیستم $1 دریافت می‌کنید.\n\nاگر مایل به تنظیم مجدد رمز عبور هستید، این لینک را دنبال کنید:\n$2
forgot_sending=ارسال ایمیل بازنشانی رمز عبور برای $2 تا $1 ..
forgot_sent=.. ارسال شد
forgot_link=از لینک زیر می‌توان برای تنظیم مجدد رمز عبور وب‌مین برای $1 در $2 دقیقه بعدی استفاده کرد :
forgot_enosudo=سودو روی این سیستم در دسترس نیست!
forgot_ecansudo=کاربر وارد شده مجوزهای sudo را ندارد
forgot_eunix=کاربر وارد شده که قابلیت sudo دارد، وجود ندارد!

View File

@@ -36,6 +36,7 @@ edit_rights=Webmin-käyttäjän käyttöoikeudet
edit_user=Käyttäjätunnus
edit_cloneof=Kloonaa Webmin-käyttäjä
edit_real=Oikea nimi
edit_email=Yhteystiedot
edit_group=Ryhmän jäsen
edit_pass=Salasana
edit_same=Sama kuin Unix
@@ -90,6 +91,7 @@ edit_selall=Valitse kaikki
edit_invert=Käänteinen valinta
edit_hide=Piilota käyttämätön
edit_switch=Vaihda käyttäjälle
edit_forgot=Lähetä salasanan palautuslinkki
edit_return=Webmin-käyttäjä
edit_return2=Webmin-ryhmä
edit_rbacdeny=RBAC-käyttötila
@@ -148,6 +150,7 @@ save_edays=Ei valittuja päiviä
save_ehours=Puuttuvat tai virheelliset ajat sallia
save_ehours2=Aloitusajan on oltava ennen loppua
save_etemp=Vaihtoehtoa pakottaa salasananvaihto seuraavan kirjautumisen yhteydessä ei voida käyttää, ellei <a href='$1'>kehoteta käyttäjiä syöttämään uusia salasanoja</a> on käytössä
save_eemail=Sähköpostiosoite ei voi sisältää merkkiä :
delete_err=Käyttäjän poistaminen epäonnistui
delete_eself=Et voi poistaa itseäsi
@@ -247,6 +250,9 @@ log_sync=Vaihdettu unix-käyttäjän synkronointi
log_sql=Muutettu käyttäjän ja ryhmän tietokanta
log_twofactor=Rekisteröity käyttäjä $1 kaksikerroisen palveluntarjoajan kanssa $2
log_onefactor=Rekisteröitynyt käyttäjä $1 kaksikerroiseen todennukseen
log_forgot_send=Salasanan palautusviesti käyttäjälle $1 lähetetty käyttäjälle $2
log_forgot_reset=Käyttäjän $1 salasanan vaihtaminen sähköpostiosoitteella $2
log_forgot_admin=Ylläpitäjä lähetti salasanan palautusviestin käyttäjälle $1 käyttäjälle $2
gedit_ecannot=Et voi muokata ryhmiä
gedit_title=Muokkaa Webmin-ryhmää
@@ -509,3 +515,20 @@ twofactor_failed=.. ilmoittautuminen epäonnistui: $1
twofactor_done=.. saattaa loppuun. Tunnuksesi tämän palveluntarjoajan kanssa on <tt>$1</tt>.
twofactor_setup=Kaksifaktorista todennusta ei ole vielä otettu käyttöön tässä järjestelmässä, mutta se voidaan ottaa käyttöön <a href='$1'>Webmin-määritys</a> -moduulilla.
twofactor_ebutton=Yhtään painiketta ei napsautettu!
forgot_title=Lähetä salasanan palautuslinkki
forgot_err=Salasanan palautuslinkin lähettäminen epäonnistui
forgot_header=Salasanan palautuslinkin tiedot
forgot_user=Käyttäjän salasanan vaihtaminen
forgot_email=Linkin toimitustapa
forgot_email_def=Näytä linkki Webminissä
forgot_email_sel=Lähetä linkki sähköpostitse osoitteeseen
forgot_send=Lähetä linkki
forgot_desc=Tämän sivun avulla voit luoda tai lähettää linkin, jota voidaan käyttää uuden salasanan valitsemiseen Webmin-käyttäjälle mihin tahansa sähköpostiosoitteeseen. Ole varovainen, mihin osoitteeseen lähetät tämän linkin, sillä se antaa käytännössä täyden pääsyn Webmin-kirjautumiseen!
forgot_adminmsg=Saat tämän sähköpostin Webmin-järjestelmän ylläpitäjältä osoitteessa $3, kirjautumistunnukselle $1.\n\nJos haluat jatkaa salasanan vaihtamista, seuraa tätä linkkiä:\n$2
forgot_sending=Lähetetään salasanan palautusviesti osoitteelle $2 käyttäjälle $1 ..
forgot_sent=.. lähetetty
forgot_link=Alla olevaa linkkiä voidaan käyttää Webmin-salasanan nollaamiseen käyttäjälle $1 seuraavien $2 minuutin ajaksi :
forgot_enosudo=Sudo ei ole käytettävissä tässä järjestelmässä!
forgot_ecansudo=Annetulla käyttäjällä ei ole sudo-oikeuksia
forgot_eunix=Annettua sudo-kykyistä käyttäjää ei ole olemassa!

View File

@@ -5,6 +5,7 @@ index_eulist=Échec de la liste des utilisateurs: $1
index_eglist=Échec de la liste des groupes: $1
edit_title3=Créer un utilisateur Webmin sécurisé
edit_email=Courriel de contact
edit_passold=Le dernier mot de passe a été modifié il y a $1 jours
edit_passtoday=Le mot de passe a été modifié il y a moins d'un jour
edit_twofactor=Type d'authentification à deux facteurs
@@ -15,6 +16,7 @@ edit_twofactoradd=Activer deux facteurs pour l'utilisateur
edit_locale=Lieu
edit_nochange=Appliquer les jours de changement de mot de passe?
edit_overlay=Superposition de thème personnel
edit_forgot=Envoyer le lien de réinitialisation du mot de passe
edit_temppass=Forcer le changement à la prochaine connexion
edit_security=Options de sécurité et de limites
edit_proto=Type de stockage
@@ -28,6 +30,7 @@ save_eunixname=Le nom d'utilisateur '$1' n'est pas un utilisateur Unix et ne peu
save_eoverlay=Une superposition de thème ne peut être sélectionnée que si un thème est
save_eminsize=Longueur minimale du mot de passe manquante ou non numérique
save_etemp=L'option pour forcer un changement de mot de passe à la prochaine connexion ne peut être utilisée que si <a href='$1'>invitant les utilisateurs à entrer de nouveaux mots de passe</a> est activée
save_eemail=L'adresse e-mail ne peut pas contenir le caractère :
delete_eanonuser=Cet utilisateur est utilisé pour l'accès au module anonyme
@@ -42,6 +45,9 @@ log_sync=Changement de la synchronisation des utilisateurs Unix
log_sql=Base de données d'utilisateurs et de groupes modifiée
log_twofactor=Utilisateur inscrit $1 avec un fournisseur à deux facteurs $2
log_onefactor=Utilisateur désinscrit $1 pour l'authentification à deux facteurs
log_forgot_send=Envoi d'un e-mail de réinitialisation du mot de passe pour l'utilisateur $1 à $2
log_forgot_reset=Réinitialiser le mot de passe de l'utilisateur $1 avec l'e-mail $2
log_forgot_admin=L'administrateur a envoyé un e-mail de réinitialisation du mot de passe pour l'utilisateur $1 à $2
convert_sync2=Synchroniser le mot de passe avec l'utilisateur Unix à l'avenir?
convert_user=Utilisateur Unix
@@ -147,3 +153,20 @@ twofactor_failed=.. l'inscription a échoué: $1
twofactor_done=.. Achevée. Votre ID auprès de ce fournisseur est <tt>$1</tt>.
twofactor_setup=L'authentification à deux facteurs n'a pas encore été activée sur ce système, mais peut être activée à l'aide du module <a href='$1'>Configuration Webmin</a>.
twofactor_ebutton=Aucun bouton cliqué!
forgot_title=Envoyer le lien de réinitialisation du mot de passe
forgot_err=Échec de l'envoi du lien de réinitialisation du mot de passe
forgot_header=Détails du lien de réinitialisation du mot de passe
forgot_user=Réinitialiser le mot de passe de l'utilisateur
forgot_email=Méthode de livraison du lien
forgot_email_def=Afficher le lien dans Webmin
forgot_email_sel=Envoyer le lien par e-mail à
forgot_send=Envoyer le lien
forgot_desc=Cette page vous permet de générer ou d'envoyer un lien permettant de choisir un nouveau mot de passe pour un utilisateur Webmin, à n'importe quelle adresse e-mail. Soyez vigilant quant à l'adresse à laquelle vous envoyez ce lien, car il vous accordera un accès complet à la connexion Webmin !
forgot_adminmsg=Vous recevez cet e-mail de l'administrateur du système Webmin à $3, pour la connexion $1.\n\nSi vous souhaitez procéder à la réinitialisation du mot de passe, suivez ce lien :\n$2
forgot_sending=Envoi d'un e-mail de réinitialisation du mot de passe pour $2 à $1 ..
forgot_sent=.. envoyé
forgot_link=Le lien ci-dessous peut être utilisé pour réinitialiser le mot de passe Webmin pour $1 pour les $2 prochaines minutes :
forgot_enosudo=Sudo n'est pas disponible sur ce système !
forgot_ecansudo=L'utilisateur saisi n'a pas les autorisations sudo
forgot_eunix=L'utilisateur compatible sudo saisi n'existe pas !

View File

@@ -6,6 +6,7 @@ index_eglist=Nije uspjelo popis grupa: $1
edit_title3=Stvorite sigurnog korisnika Webmin-a
edit_cloneof=Kloniranje korisnika Webmin-a
edit_email=Kontaktna e-pošta
edit_twofactor=Dvofaktorska vrsta autentifikacije
edit_twofactorprov=Korištenje davatelja $1 s ID-om $2
edit_twofactorcancel=Uklonite dvofaktorni zahtjev za provjeru autentičnosti
@@ -16,6 +17,7 @@ edit_nochange=Da li provodite dane za promjenu zaporke?
edit_egone=Odabrani korisnik više ne postoji!
edit_overlay=Prekrivanje osobne teme
edit_overlayglobal=Nema - koristite zadane postavke teme
edit_forgot=Pošalji poveznicu za resetiranje lozinke
edit_global=Dozvole za sve module
edit_temppass=Prisilite promjenu pri sljedećoj prijavi
edit_proto=Vrsta skladištenja
@@ -31,6 +33,7 @@ edit_unsafe=Ponovno postavite na neograničeno
save_eunixname=Korisničko ime '$1' nije Unix korisnik i zato ga nije moguće koristiti u sigurnom načinu rada
save_eoverlay=Prekrivanje teme ne može se odabrati ako nije tema
save_etemp=Opcija prisiljavanja promjene lozinke pri sljedećoj prijavi ne može se koristiti ako nije omogućen <a href='$1'>pozivanje korisnika da unose nove lozinke</a>
save_eemail=Adresa e-pošte ne smije sadržavati znak :
delete_eanonuser=Ovaj korisnik se koristi za anonimni pristup modulu
@@ -44,6 +47,9 @@ log_joingroup=Dodana $1 korisnici webminova u grupu $2
log_sql=Izmijenjena korisnička i grupna baza podataka
log_twofactor=Registrirani korisnik $1 s davateljem s dva faktora $2
log_onefactor=Zabranjen korisnik $1 za dvofaktorsku provjeru autentičnosti
log_forgot_send=Poslana je e-pošta za poništavanje lozinke za korisnika $1 na $2
log_forgot_reset=Poništi lozinku za korisnika $1 s e-poštom $2
log_forgot_admin=Administrator je poslao e-poruku za resetiranje lozinke za korisnika $1 na $2
gedit_desc=Opis grupe
gedit_egone=Odabrana skupina više ne postoji!
@@ -162,3 +168,20 @@ twofactor_failed=.. registracija nije uspjela: $1
twofactor_done=.. kompletna. Vaš ID kod ovog davatelja usluga je <tt>$1</tt>.
twofactor_setup=Dvofaktorna provjera identiteta još nije omogućena na ovom sustavu, ali se može uključiti pomoću modula <a href='$1'>Konfiguracija Webmin</a>.
twofactor_ebutton=Nijedan gumb nije kliknut!
forgot_title=Pošalji poveznicu za resetiranje lozinke
forgot_err=Slanje poveznice za resetiranje lozinke nije uspjelo
forgot_header=Detalji poveznice za resetiranje lozinke
forgot_user=Poništi lozinku za korisnika
forgot_email=Način isporuke poveznice
forgot_email_def=Prikaži poveznicu u Webminu
forgot_email_sel=Pošalji poveznicu putem e-pošte na
forgot_send=Pošalji poveznicu
forgot_desc=Ova stranica vam omogućuje generiranje ili slanje poveznice koja se može koristiti za odabir nove lozinke za Webmin korisnika na bilo koju adresu e-pošte. Budite oprezni na koju adresu šaljete ovu poveznicu jer će ona zapravo omogućiti puni pristup Webmin prijavi!
forgot_adminmsg=Ovu e-poruku primate od administratora Webmin sustava na $3, za prijavu $1.\n\nAko želite nastaviti s resetiranjem lozinke, slijedite ovu poveznicu:\n$2
forgot_sending=Slanje e-pošte za resetiranje lozinke za $2 na $1 ..
forgot_sent=poslano
forgot_link=Donja poveznica može se koristiti za resetiranje Webmin lozinke za $1 za sljedećih $2 minuta :
forgot_enosudo=Sudo nije dostupan na ovom sustavu!
forgot_ecansudo=Uneseni korisnik nema sudo dozvole
forgot_eunix=Uneseni korisnik koji podržava sudo ne postoji!

View File

@@ -6,6 +6,7 @@ index_eglist=A csoportok felsorolása nem sikerült: $1
edit_title3=Hozzon létre biztonságos Webmin felhasználót
edit_cloneof=A Webmin felhasználó klónozása
edit_email=Kapcsolatfelvételi e-mail cím
edit_passlocked=A jelszó nem változott $1 napig - a fiók zárolva van!
edit_passmax=A jelszó nem változott $1 napig - a következő bejelentkezéskor meg kell változtatni
edit_passold=A jelszó utoljára megváltozott $1 nappal ezelőtt
@@ -22,6 +23,7 @@ edit_nochange=Végrehajtja a jelszócsere napjait?
edit_egone=A kiválasztott felhasználó már nem létezik!
edit_overlay=Személyes téma overlay
edit_overlayglobal=Nincs - használja a téma alapértelmezéseit
edit_forgot=Jelszó-visszaállítási link küldése
edit_global=Minden modul engedélyei
edit_temppass=A változtatás kényszerítése a következő bejelentkezéskor
edit_days=A hét megengedett napjai
@@ -48,6 +50,7 @@ save_edays=Nincs nap kiválasztva
save_ehours=Hiányzó vagy érvénytelen idő megengedhető
save_ehours2=A megengedett kezdési időnek vége előtt kell lennie
save_etemp=A jelszó megváltoztatásának kényszerítését a következő bejelentkezéskor csak akkor lehet használni, ha a <a href='$1'>felszólítja a felhasználókat új jelszavak megadására</a>.
save_eemail=Az e-mail cím nem tartalmazhatja a : karaktert
delete_eanonuser=Ezt a felhasználót anonim modul-hozzáféréshez használják
@@ -65,6 +68,9 @@ log_sync=Megváltozott az unix felhasználói szinkronizálás
log_sql=Megváltozott felhasználói és csoport adatbázis
log_twofactor=Regisztrált felhasználó $2
log_onefactor=Nem regisztrált felhasználó $1 két tényezős hitelesítéshez
log_forgot_send=Jelszó-visszaállító e-mail elküldve a(z) $1 felhasználó jelszavának visszaállítására vonatkozó e-mailben a következő címre: $2
log_forgot_reset=Jelszó visszaállítása a(z) $1 felhasználóhoz, amelynek e-mail címe $2
log_forgot_admin=Az adminisztrátor jelszó-visszaállító e-mailt küldött a(z) $1 felhasználónak a következő címre: $2
gedit_desc=Csoport leírás
gedit_egone=A kiválasztott csoport már nem létezik!
@@ -212,3 +218,20 @@ twofactor_failed=.. a regisztráció sikertelen: $1
twofactor_done=.. teljes. Az Ön azonosítója ezzel a szolgáltatóval <tt>$1</tt>.
twofactor_setup=A kétfaktoros hitelesítés még nem engedélyezve van ebben a rendszeren, de bekapcsolható a <a href='$1'>Webmin konfigurálása</a> modul segítségével.
twofactor_ebutton=Nincs gombra kattintva!
forgot_title=Jelszó-visszaállítási link küldése
forgot_err=Nem sikerült elküldeni a jelszó-visszaállító linket
forgot_header=Jelszó-visszaállítási link részletei
forgot_user=Jelszó visszaállítása a felhasználóhoz
forgot_email=Link kézbesítési módja
forgot_email_def=Link megjelenítése a Webminben
forgot_email_sel=Link küldése e-mailben ide:
forgot_send=Link küldése
forgot_desc=Ez az oldal lehetővé teszi egy link létrehozását vagy elküldését, amellyel új jelszót választhat egy Webmin felhasználó számára bármely e-mail címre. Ügyeljen arra, hogy melyik címre küldi ezt a linket, mivel az gyakorlatilag teljes hozzáférést biztosít a Webmin bejelentkezéshez!
forgot_adminmsg=Ezt az e-mailt a(z) $3 címen található Webmin rendszer adminisztrátorától kapja a(z) $1 bejelentkezési névhez.\n\nHa folytatni szeretné a jelszó visszaállítását, kövesse ezt a linket:\n$2
forgot_sending=Jelszó-visszaállító e-mail küldése a(z) $2 címhez $1 címre ..
forgot_sent=.. elküldve
forgot_link=Az alábbi linkre kattintva visszaállíthatja a(z) $1 Webmin jelszavát a következő $2 percre :
forgot_enosudo=A Sudo nem érhető el ezen a rendszeren!
forgot_ecansudo=A megadott felhasználónak nincsenek sudo jogosultságai
forgot_eunix=A megadott sudo-képes felhasználó nem létezik!

View File

@@ -3,18 +3,21 @@ index_twofactor=Autenticazione a due fattori
index_joingroup=Aggiungi al gruppo:
edit_title3=Crea un utente Webmin sicuro
edit_email=Email di contatto
edit_twofactor=Tipo di autenticazione a due fattori
edit_twofactorprov=Utilizzo del provider $1 con ID $2
edit_twofactorcancel=Rimuovere i requisiti di autenticazione a due fattori
edit_twofactornone=Nessuna configurazione ancora
edit_twofactoradd=Abilita due fattori per l'utente
edit_locale=Locale
edit_forgot=Invia collegamento per reimpostare la password
edit_safe=Livello di privilegio
edit_safe0=illimitato
edit_safe1=Solo moduli sicuri
edit_unsafe=Ripristina su senza restrizioni
save_eunixname=Il nome utente '$1' non è un utente Unix, quindi non può essere utilizzato in modalità provvisoria
save_eemail=L'indirizzo email non può contenere il carattere :
delete_eanonuser=Questo utente viene utilizzato per l'accesso al modulo anonimo
@@ -25,6 +28,9 @@ acl_locale=È possibile modificare le impostazioni locali?
log_joingroup=Aggiunti $1 utenti Webmin al gruppo $2
log_twofactor=Utente registrato $1 con provider a due fattori $2
log_onefactor=Utente non registrato $1 per l'autenticazione a due fattori
log_forgot_send=Inviata email di reimpostazione password per l'utente $1 a $2
log_forgot_reset=Reimposta la password per l'utente $1 con e-mail $2
log_forgot_admin=L'amministratore ha inviato un'e-mail per la reimpostazione della password per l'utente $1 a $2
convert_sync2=Sincronizzare la password con l'utente Unix in futuro?
convert_user=Utente Unix
@@ -75,3 +81,20 @@ twofactor_failed=.. registrazione non riuscita: $1
twofactor_done=.. completare. Il tuo ID con questo provider è <tt>$1</tt>.
twofactor_setup=L'autenticazione a due fattori non è stata ancora abilitata su questo sistema, ma può essere attivata utilizzando il modulo <a href='$1'>Configurazione Webmin</a>.
twofactor_ebutton=Nessun pulsante cliccato!
forgot_title=Invia collegamento per reimpostare la password
forgot_err=Impossibile inviare il link per la reimpostazione della password
forgot_header=Dettagli del collegamento per la reimpostazione della password
forgot_user=Reimposta la password per l'utente
forgot_email=Metodo di consegna del collegamento
forgot_email_def=Visualizza collegamento in Webmin
forgot_email_sel=Invia il collegamento via email a
forgot_send=Invia collegamento
forgot_desc=Questa pagina consente di generare o inviare a qualsiasi indirizzo email un link che può essere utilizzato per selezionare una nuova password per un utente Webmin. Fai attenzione all'indirizzo a cui invii questo link, poiché di fatto garantirà l'accesso completo al login di Webmin!
forgot_adminmsg=Stai ricevendo questa e-mail dall'amministratore del sistema Webmin all'indirizzo $3, per l'accesso $1.\n\nSe desideri procedere con la reimpostazione della password, segui questo collegamento:\n$2
forgot_sending=Invio dell'e-mail di reimpostazione della password per $2 a $1 ..
forgot_sent=.. inviato
forgot_link=Il collegamento sottostante può essere utilizzato per reimpostare la password Webmin per $1 per i prossimi $2 minuti :
forgot_enosudo=Sudo non è disponibile su questo sistema!
forgot_ecansudo=L'utente inserito non ha i permessi sudo
forgot_eunix=L'utente abilitato a sudo immesso non esiste!

View File

@@ -5,6 +5,7 @@ index_eulist=ユーザーのリストに失敗しました: $1
index_eglist=グループのリストに失敗しました: $1
edit_title3=安全なWebminユーザーを作成する
edit_email=連絡先メールアドレス
edit_twofactor=二要素認証タイプ
edit_twofactorprov=ID $2 のプロバイダー $1 を使用する
edit_twofactorcancel=二要素認証要件を削除する
@@ -14,6 +15,7 @@ edit_locale=ロケール
edit_egone=選択したユーザーは存在しません!
edit_overlay=個人テーマのオーバーレイ
edit_overlayglobal=なし-テーマのデフォルトを使用
edit_forgot=パスワードリセットリンクを送信
edit_global=すべてのモジュールの権限
edit_proto=保管タイプ
edit_proto_mysql=MySQLデータベース
@@ -28,6 +30,7 @@ edit_unsafe=無制限にリセット
save_eunixname=ユーザー名「$1」はUnixユーザーではないため、セーフモードでは使用できません
save_eoverlay=テーマオーバーレイを選択できないのは、テーマが
save_etemp=<a href='$1'>ユーザーに新しいパスワードの入力を促す</a>が有効になっていない限り、次回ログイン時にパスワードの変更を強制するオプションは使用できません
save_eemail=メールアドレスには「:」文字を含めることはできません
delete_eanonuser=このユーザーは匿名モジュールアクセスに使用されています
@@ -41,6 +44,9 @@ log_joingroup=$1 Webminユーザーをグループ $2 に追加しました
log_sql=変更されたユーザーおよびグループデータベース
log_twofactor=登録済みユーザー $1 と2要素プロバイダー $2
log_onefactor=二要素認証の登録解除ユーザー $1
log_forgot_send=ユーザー $1 のパスワード リセット メールを $2 に送信しました
log_forgot_reset=メール $2 を使用してユーザー $1 のパスワードをリセットします
log_forgot_admin=管理者がユーザー $1 のパスワード リセット メールを $2 に送信しました
gedit_desc=グループの説明
gedit_egone=選択したグループはもう存在しません!
@@ -158,3 +164,20 @@ twofactor_failed=..登録に失敗しました: $1
twofactor_done=..完了。このプロバイダーのIDは<tt>$1</tt>です。
twofactor_setup=このシステムでは2要素認証はまだ有効になっていませんが、<a href='$1'>Webmin Configuration</a>モジュールを使用して有効にすることができます。
twofactor_ebutton=ボタンがクリックされていません!
forgot_title=パスワードリセットリンクを送信
forgot_err=パスワードリセットリンクの送信に失敗しました
forgot_header=パスワードリセットリンクの詳細
forgot_user=ユーザーのパスワードをリセットする
forgot_email=リンク配信方法
forgot_email_def=Webminでリンクを表示する
forgot_email_sel=リンクをメールで送信
forgot_send=リンクを送信
forgot_desc=このページでは、Webminユーザーの新しいパスワードを設定するためのリンクを生成または任意のメールアドレスに送信できます。このリンクを送信するアドレスにはご注意ください。送信先はWebminログインへのフルアクセスを許可することになりますのでご注意ください。
forgot_adminmsg=このメールは、$3 の Webmin システムの管理者から、ログイン $1 に対して送信されました。\n\nパスワードのリセットを続行する場合は、次のリンクをクリックしてください :\n$2
forgot_sending=$2 のパスワード リセット メールを $1 に送信しています。
forgot_sent=.. 送信済み
forgot_link=以下のリンクを使用すると、今後 $2 分間、$1 の Webmin パスワードをリセットできます。
forgot_enosudo=このシステムでは Sudo は使用できません。
forgot_ecansudo=入力されたユーザーにはsudo権限がありません
forgot_eunix=入力された sudo 対応ユーザーは存在しません。

View File

@@ -5,6 +5,7 @@ index_eulist=사용자를 나열하지 못했습니다 : $1
index_eglist=그룹을 나열하지 못했습니다 : $1
edit_title3=안전한 Webmin 사용자 생성
edit_email=연락처 이메일
edit_twofactor=이중 인증 유형
edit_twofactorprov=ID가 $2 인 제공자 $1 사용
edit_twofactorcancel=이중 인증 요구 사항 제거
@@ -14,6 +15,7 @@ edit_locale=장소
edit_egone=선택된 사용자가 더 이상 존재하지 않습니다!
edit_overlay=개인 테마 오버레이
edit_overlayglobal=없음-테마 기본값 사용
edit_forgot=비밀번호 재설정 링크 보내기
edit_global=모든 모듈에 대한 권한
edit_proto=저장 유형
edit_proto_mysql=MySQL 데이터베이스
@@ -28,6 +30,7 @@ edit_unsafe=무제한으로 재설정
save_eunixname=사용자 이름 '$1'은 (는) Unix 사용자가 아니므로 안전 모드에서 사용할 수 없습니다
save_eoverlay=테마가 아닌 경우 테마 오버레이를 선택할 수 없습니다
save_etemp=<a href='$1'>사용자에게 새 비밀번호를 입력하도록 프롬프트</a>하지 않으면 다음 로그인시 비밀번호를 강제로 변경하는 옵션을 사용할 수 없습니다.
save_eemail=이메일 주소에는 : 문자를 포함할 수 없습니다
delete_eanonuser=이 사용자는 익명 모듈 액세스에 사용되고 있습니다
@@ -41,6 +44,9 @@ log_joingroup=$1 Webmin 사용자를 $2 그룹에 추가했습니다.
log_sql=변경된 사용자 및 그룹 데이터베이스
log_twofactor=2 단계 공급자 $2 에 등록 된 사용자 $1
log_onefactor=이중 인증을위한 등록 해제 된 사용자 $1
log_forgot_send=사용자 $1의 비밀번호 재설정 이메일을 $2에게 보냈습니다
log_forgot_reset=이메일 주소 $2를 사용하여 사용자 $1의 비밀번호를 재설정합니다
log_forgot_admin=관리자가 사용자 $1에 대한 비밀번호 재설정 이메일을 $2에게 보냈습니다
gedit_desc=그룹 설명
gedit_egone=선택된 그룹이 더 이상 존재하지 않습니다!
@@ -158,3 +164,20 @@ twofactor_failed=.. 등록 실패 : $1
twofactor_done=.. 완료 이 제공자의 귀하의 ID는 <tt>$1</tt>입니다.
twofactor_setup=이 시스템에서 2 단계 인증이 아직 활성화되지 않았지만 <a href='$1'>Webmin 구성</a> 모듈을 사용하여 켤 수 있습니다.
twofactor_ebutton=버튼을 클릭하지 않았습니다!
forgot_title=비밀번호 재설정 링크 보내기
forgot_err=비밀번호 재설정 링크를 보내지 못했습니다
forgot_header=비밀번호 재설정 링크 세부 정보
forgot_user=사용자 비밀번호 재설정
forgot_email=링크 전달 방식
forgot_email_def=Webmin에서 링크 표시
forgot_email_sel=이메일로 링크 보내기
forgot_send=링크 보내기
forgot_desc=이 페이지에서는 Webmin 사용자의 새 비밀번호를 선택하는 데 사용할 수 있는 링크를 생성하거나 모든 이메일 주소로 전송할 수 있습니다. 이 링크를 어떤 이메일 주소로 보낼지 신중하게 선택해야 합니다. Webmin 로그인에 대한 모든 권한이 부여되기 때문입니다!
forgot_adminmsg=$3의 Webmin 시스템 관리자로부터 $1 로그인에 대한 이메일을 받았습니다.\n\n비밀번호 재설정을 진행하려면 이 링크를 따르세요:\n$2
forgot_sending=$2에 대한 비밀번호 재설정 이메일을 $1(으)로 보내는 중 ..
forgot_sent=.. 전송된
forgot_link=아래 링크를 사용하면 $1의 Webmin 비밀번호를 다음 $2분 동안 재설정할 수 있습니다
forgot_enosudo=이 시스템에서는 sudo를 사용할 수 없습니다!
forgot_ecansudo=입력된 사용자에게 sudo 권한이 없습니다
forgot_eunix=sudo 권한이 있는 사용자가 존재하지 않습니다!

View File

@@ -1,18 +1,25 @@
index_screate=Buat pengguna selamat yang baru.
edit_title3=Buat Pengguna Webmin Selamat
edit_email=E-mel hubungan
edit_locale=Tempatan
edit_forgot=Hantar Pautan Tetapan Semula Kata Laluan
edit_safe=Tahap keistimewaan
edit_safe0=Tidak terkawal
edit_safe1=Modul selamat sahaja
edit_unsafe=Tetapkan semula kepada tanpa had
save_eunixname=Nama pengguna '$1' bukan pengguna Unix, dan oleh itu tidak boleh digunakan dalam mod selamat
save_eemail=Alamat e-mel tidak boleh mengandungi : aksara
delete_eanonuser=Pengguna ini sedang digunakan untuk akses modul tanpa nama
acl_locale=Boleh tukar tempat?
log_forgot_send=Menghantar e-mel tetapan semula kata laluan untuk pengguna $1 hingga $2
log_forgot_reset=Tetapkan semula kata laluan untuk pengguna $1 dengan e-mel $2
log_forgot_admin=Pentadbir menghantar e-mel tetapan semula kata laluan untuk pengguna $1 hingga $2
sync_modify=Ganti nama pengguna Webmin yang sepadan apabila pengguna Unix dinamakan semula.
sessions_actions=Tindakan..
@@ -37,3 +44,20 @@ sql_timeout_secs=saat
sql_etimeout=Tamat masa sambungan cache mestilah nombor
twofactor_ebutton=Tiada butang diklik!
forgot_title=Hantar Pautan Tetapan Semula Kata Laluan
forgot_err=Gagal menghantar pautan tetapan semula kata laluan
forgot_header=Butiran pautan tetapan semula kata laluan
forgot_user=Tetapkan semula kata laluan untuk pengguna
forgot_email=Kaedah penghantaran pautan
forgot_email_def=Paparkan pautan dalam Webmin
forgot_email_sel=Hantar pautan melalui e-mel ke
forgot_send=Hantar Pautan
forgot_desc=Halaman ini membolehkan anda menjana atau menghantar pautan yang boleh digunakan untuk memilih kata laluan baharu untuk pengguna Webmin ke mana-mana alamat e-mel. Berhati-hati ke alamat mana anda menghantar pautan ini, kerana ia akan memberikan akses penuh kepada log masuk Webmin dengan berkesan!
forgot_adminmsg=Anda menerima e-mel ini daripada pentadbir sistem Webmin di $3, untuk log masuk $1.\n\nJika anda ingin meneruskan penetapan semula kata laluan, ikuti pautan ini :\n$2
forgot_sending=Menghantar e-mel tetapan semula kata laluan untuk $2 hingga $1 ..
forgot_sent=.. dihantar
forgot_link=Pautan di bawah boleh digunakan untuk menetapkan semula kata laluan Webmin untuk $1 untuk $2 minit seterusnya :
forgot_enosudo=Sudo tidak tersedia pada sistem ini!
forgot_ecansudo=Pengguna yang dimasukkan tidak mempunyai kebenaran sudo
forgot_eunix=Pengguna berkemampuan sudo yang dimasukkan tidak wujud!

View File

@@ -3,18 +3,21 @@ index_twofactor=Twee-factor authenticatie
index_joingroup=Aan groep toevoegen:
edit_title3=Maak een veilige webmingebruiker aan
edit_email=Contact e-mailadres
edit_twofactor=Twee-factor authenticatietype
edit_twofactorprov=Gebruik provider $1 met ID $2
edit_twofactorcancel=Verwijder twee-factor authenticatie vereiste
edit_twofactornone=Nog geen configuratie
edit_twofactoradd=Twee-factor voor gebruiker inschakelen
edit_locale=Lokaal
edit_forgot=Stuur wachtwoordherstellink
edit_safe=Privilege niveau
edit_safe0=onbeperkt
edit_safe1=Alleen veilige modules
edit_unsafe=Reset naar onbeperkt
save_eunixname=De gebruikersnaam '$1' is geen Unix-gebruiker en kan dus niet in de veilige modus worden gebruikt
save_eemail=E-mailadres mag het teken : niet bevatten
delete_eanonuser=Deze gebruiker wordt gebruikt voor anonieme moduletoegang
@@ -25,6 +28,9 @@ acl_locale=Kan de locatie worden gewijzigd?
log_joingroup=$1 Webmin-gebruikers toegevoegd aan $2
log_twofactor=Ingeschreven gebruiker $1 bij two-factor provider $2
log_onefactor=Uitgeschreven gebruiker $1 voor tweefactorauthenticatie
log_forgot_send=Verzonden e-mail voor wachtwoordherstel voor gebruiker $1 naar $2
log_forgot_reset=Wachtwoord opnieuw instellen voor gebruiker $1 met e-mailadres $2
log_forgot_admin=Beheerder heeft wachtwoordherstel-e-mail verzonden voor gebruiker $1 naar $2
convert_sync2=Wachtwoord synchroniseren met Unix-gebruiker in de toekomst?
convert_user=Unix-gebruiker
@@ -74,3 +80,20 @@ twofactor_failed=.. inschrijving mislukt: $1
twofactor_done=.. compleet. Uw ID bij deze provider is <tt>$1</tt>.
twofactor_setup=Tweefactorauthenticatie is nog niet ingeschakeld op dit systeem, maar kan worden ingeschakeld met de module <a href='$1'>Webmin-configuratie</a>.
twofactor_ebutton=Er is niet op een knop geklikt!
forgot_title=Stuur wachtwoordherstellink
forgot_err=Het is niet gelukt om de link voor het opnieuw instellen van het wachtwoord te versturen
forgot_header=Details voor wachtwoordherstellink
forgot_user=Wachtwoord voor gebruiker opnieuw instellen
forgot_email=Linkleveringsmethode
forgot_email_def=Link weergeven in Webmin
forgot_email_sel=Link via e-mail verzenden naar
forgot_send=Link verzenden
forgot_desc=Met deze pagina kunt u een link genereren of versturen naar elk e-mailadres waarmee u een nieuw wachtwoord voor een Webmin-gebruiker kunt kiezen. Let op naar welk adres u deze link stuurt, want hiermee krijgt u in feite volledige toegang tot de Webmin-login!
forgot_adminmsg=U ontvangt deze e-mail van de beheerder van het Webmin-systeem op $3, voor de login $1.\n\nAls u wilt doorgaan met het opnieuw instellen van het wachtwoord, volgt u deze link:\n$2
forgot_sending=Verzenden van e-mail voor wachtwoordherstel van $2 naar $1 ..
forgot_sent=.. verstuurd
forgot_link=U kunt de onderstaande link gebruiken om het Webmin-wachtwoord voor $1 opnieuw in te stellen voor de komende $2 minuten :
forgot_enosudo=Sudo is niet beschikbaar op dit systeem!
forgot_ecansudo=De ingevoerde gebruiker heeft geen sudo-rechten
forgot_eunix=De ingevoerde sudo-compatibele gebruiker bestaat niet!

View File

@@ -1,7 +1,15 @@
edit_email=Kontakt-e-postadresse
edit_locale=Språk
edit_forgot=Send lenke til tilbakestilling av passord
save_eemail=E-postadressen kan ikke inneholde tegnet:
acl_locale=Kan du endre lokalitet?
log_forgot_send=Sendte e-post for tilbakestilling av passord for bruker $1 til $2
log_forgot_reset=Tilbakestill passord for bruker $1 med e-postadressen $2
log_forgot_admin=Admin sendte e-post om tilbakestilling av passord for bruker $1 til $2
sync_modify=Gi nytt navn til den samsvarende Webmin-brukeren når en Unix-bruker får nytt navn.
sessions_all=Alle økter..
@@ -13,3 +21,20 @@ sql_timeout_def=Bruk standard tilkoblingstimeout (60 sekunder)
sql_timeout_for=Lukk hurtigbufrede tilkoblinger etter
sql_timeout_secs=sekunder
sql_etimeout=Tidsavbrudd for hurtigbufret tilkobling må være et tall
forgot_title=Send lenke til tilbakestilling av passord
forgot_err=Kunne ikke sende lenken for tilbakestilling av passord
forgot_header=Detaljer om lenke til tilbakestilling av passord
forgot_user=Tilbakestill passord for bruker
forgot_email=Leveringsmetode for lenker
forgot_email_def=Vis lenke i Webmin
forgot_email_sel=Send lenke via e-post til
forgot_send=Send lenke
forgot_desc=Denne siden lar deg generere eller sende en lenke som kan brukes til å velge et nytt passord for en Webmin-bruker til en hvilken som helst e-postadresse. Vær forsiktig med hvilken adresse du sender denne lenken til, da den effektivt vil gi full tilgang til Webmin-påloggingen!
forgot_adminmsg=Du mottar denne e-posten fra administratoren av Webmin-systemet på $3, for påloggingen $1.\n\nHvis du vil fortsette med å tilbakestille passordet, følg denne lenken:\n$2
forgot_sending=Sender e-post for tilbakestilling av passord for $2 til $1 ..
forgot_sent=.. sendt
forgot_link=Lenken nedenfor kan brukes til å tilbakestille Webmin-passordet for $1 for de neste $2 minuttene :
forgot_enosudo=Sudo er ikke tilgjengelig på dette systemet!
forgot_ecansudo=Brukeren som ble oppgitt har ikke sudo-tillatelser
forgot_eunix=Den oppgitte sudo-kompatible brukeren finnes ikke!

25
acl/lang/pl.auto Normal file
View File

@@ -0,0 +1,25 @@
edit_email=Adres e-mail kontaktowy
edit_forgot=Wyślij link do resetowania hasła
save_eemail=Adres e-mail nie może zawierać znaku :
log_forgot_send=Wysłano e-mail z resetem hasła dla użytkownika $1 do $2
log_forgot_reset=Zresetuj hasło dla użytkownika $1 za pomocą adresu e-mail $2
log_forgot_admin=Administrator wysłał e-mail z resetem hasła dla użytkownika $1 do $2
forgot_title=Wyślij link do resetowania hasła
forgot_err=Nie udało się wysłać linku do resetowania hasła
forgot_header=Szczegóły łącza do resetowania hasła
forgot_user=Zresetuj hasło dla użytkownika
forgot_email=Metoda dostarczania linków
forgot_email_def=Wyświetl link w Webmin
forgot_email_sel=Wyślij link e-mailem na adres
forgot_send=Wyślij link
forgot_desc=Ta strona umożliwia wygenerowanie lub wysłanie linku, który może zostać użyty do wybrania nowego hasła dla użytkownika Webmin na dowolny adres e-mail. Uważaj, na jaki adres wysyłasz ten link, ponieważ skutecznie przyzna on pełny dostęp do logowania Webmin!
forgot_adminmsg=Otrzymujesz tę wiadomość e-mail od administratora systemu Webmin w $3, dla loginu $1.\n\nJeśli chcesz kontynuować resetowanie hasła, kliknij ten link:\n$2
forgot_sending=Wysyłanie wiadomości e-mail z prośbą o zresetowanie hasła dla $2 do $1 ..
forgot_sent=.. wysłano
forgot_link=Poniższy link może zostać użyty do zresetowania hasła Webmin dla $1 na następne $2 minuty :
forgot_enosudo=Sudo nie jest dostępne w tym systemie!
forgot_ecansudo=Wprowadzony użytkownik nie ma uprawnień sudo
forgot_eunix=Podany użytkownik obsługujący sudo nie istnieje!

View File

@@ -27,6 +27,7 @@ edit_title3=Criar usuário Webmin seguro
edit_readonly=Esse usuário do Webmin não deve ser editado, pois é gerenciado pelo módulo $1. <a href='$2'>Clique aqui</a> para ignorar este aviso e editar o usuário de qualquer maneira - mas lembre-se de que qualquer alteração manual pode ser sobrescrita!
edit_cloneof=Clonando usuário Webmin
edit_real=Nome real
edit_email=E-mail de contato
edit_group=Membro do grupo
edit_lock=Nenhuma senha aceita
edit_pam=Autenticação PAM
@@ -75,6 +76,7 @@ edit_selall=Selecionar tudo
edit_invert=Seleção invertida
edit_hide=Ocultar não utilizado
edit_switch=Mudar para usuário
edit_forgot=Enviar link para redefinição de senha
edit_return=Usuário Webmin
edit_return2=Grupo Webmin
edit_rbacdeny=Modo de acesso RBAC
@@ -128,6 +130,7 @@ save_edays=Não há dias para permitir selecionados
save_ehours=Tempos ausentes ou inválidos para permitir
save_ehours2=A hora de início permitida deve ser antes do final
save_etemp=A opção de forçar uma alteração de senha no próximo login não pode ser usada, a menos que <a href='$1'>solicite aos usuários que insiram novas senhas</a> esteja ativado
save_eemail=O endereço de e-mail não pode conter o caractere :
delete_err=Falha ao excluir usuário
delete_eself=Você não pode se excluir
@@ -223,6 +226,9 @@ log_sync=Sincronização de usuário unix alterada
log_sql=Banco de dados de usuário e grupo alterado
log_twofactor=Usuário registrado $1 com o provedor de dois fatores $2
log_onefactor=Usuário desinscrito $1 para autenticação de dois fatores
log_forgot_send=Enviou e-mail de redefinição de senha para o usuário $1 para $2
log_forgot_reset=Redefinir senha para usuário $1 com e-mail $2
log_forgot_admin=O administrador enviou um e-mail de redefinição de senha para o usuário $1 para $2
gedit_ecannot=Você não tem permissão para editar grupos
gedit_title=Editar grupo Webmin
@@ -485,3 +491,20 @@ twofactor_failed=.. inscrição falhou: $1
twofactor_done=.. completo. Seu ID com este provedor é <tt>$1</tt>.
twofactor_setup=A autenticação de dois fatores ainda não foi ativada neste sistema, mas pode ser ativada usando o módulo <a href='$1'>Webmin Configuration</a>.
twofactor_ebutton=Nenhum botão clicou!
forgot_title=Enviar link para redefinição de senha
forgot_err=Falha ao enviar link para redefinição de senha
forgot_header=Detalhes do link para redefinição de senha
forgot_user=Redefinir senha do usuário
forgot_email=Método de entrega de links
forgot_email_def=Exibir link no Webmin
forgot_email_sel=Enviar link por e-mail para
forgot_send=Enviar link
forgot_desc=Esta página permite que você gere ou envie um link que pode ser usado para selecionar uma nova senha para um usuário do Webmin para qualquer endereço de e-mail. Tenha cuidado com o endereço para o qual você envia este link, pois ele efetivamente concederá acesso total ao login do Webmin!
forgot_adminmsg=Você está recebendo este e-mail do administrador do sistema Webmin em $3, para o login $1.\n\nSe desejar prosseguir com a redefinição da senha, siga este link:\n$2
forgot_sending=Enviando e-mail de redefinição de senha de $2 para $1 ..
forgot_sent=.. enviado
forgot_link=O link abaixo pode ser usado para redefinir a senha do Webmin para $1 pelos próximos $2 minutos :
forgot_enosudo=Sudo não está disponível neste sistema!
forgot_ecansudo=O usuário inserido não possui permissões sudo
forgot_eunix=O usuário habilitado para sudo inserido não existe!

View File

@@ -5,6 +5,7 @@ index_eulist=Falha ao listar usuários: $1
index_eglist=Falha ao listar grupos: $1
edit_title3=Criar usuário Webmin seguro
edit_email=E-mail de contato
edit_twofactor=Tipo de autenticação de dois fatores
edit_twofactorprov=Usando o provedor $1 com o ID $2
edit_twofactorcancel=Remover requisito de autenticação de dois fatores
@@ -12,6 +13,7 @@ edit_twofactornone=Nenhuma configuração ainda
edit_twofactoradd=Ativar dois fatores para o usuário
edit_locale=Localidade
edit_egone=O usuário selecionado não existe mais!
edit_forgot=Enviar link para redefinição de senha
edit_proto=Tipo de armazenamento
edit_proto_mysql=Banco de dados MySQL
edit_proto_postgresql=Banco de dados PostgreSQL
@@ -24,6 +26,7 @@ edit_unsafe=Redefinir para irrestrito
save_eunixname=O nome de usuário '$1' não é um usuário Unix e, portanto, não pode ser usado no modo de segurança
save_etemp=A opção de forçar uma alteração de senha no próximo login não pode ser usada, a menos que <a href='$1'>solicite aos usuários que insiram novas senhas</a> esteja ativado
save_eemail=O endereço de e-mail não pode conter o caractere :
delete_eanonuser=Este usuário está sendo usado para acesso anônimo ao módulo
@@ -37,6 +40,9 @@ log_joingroup=Adicionados $1 usuários Webmin ao grupo $2
log_sql=Banco de dados de usuário e grupo alterado
log_twofactor=Usuário registrado $1 com o provedor de dois fatores $2
log_onefactor=Usuário desinscrito $1 para autenticação de dois fatores
log_forgot_send=Enviou e-mail de redefinição de senha para o usuário $1 para $2
log_forgot_reset=Redefinir senha para usuário $1 com e-mail $2
log_forgot_admin=O administrador enviou um e-mail de redefinição de senha para o usuário $1 para $2
gedit_desc=Descrição do grupo
gedit_egone=O grupo selecionado não existe mais!
@@ -154,3 +160,20 @@ twofactor_failed=.. inscrição falhou: $1
twofactor_done=.. completo. Seu ID com este provedor é <tt>$1</tt>.
twofactor_setup=A autenticação de dois fatores ainda não foi ativada neste sistema, mas pode ser ativada usando o módulo <a href='$1'>Webmin Configuration</a>.
twofactor_ebutton=Nenhum botão clicou!
forgot_title=Enviar link para redefinição de senha
forgot_err=Falha ao enviar link para redefinição de senha
forgot_header=Detalhes do link para redefinição de senha
forgot_user=Redefinir senha do usuário
forgot_email=Método de entrega de links
forgot_email_def=Exibir link no Webmin
forgot_email_sel=Enviar link por e-mail para
forgot_send=Enviar link
forgot_desc=Esta página permite que você gere ou envie um link que pode ser usado para selecionar uma nova senha para um usuário do Webmin para qualquer endereço de e-mail. Tenha cuidado com o endereço para o qual você envia este link, pois ele efetivamente concederá acesso total ao login do Webmin!
forgot_adminmsg=Você está recebendo este e-mail do administrador do sistema Webmin em $3, para o login $1.\n\nSe desejar prosseguir com a redefinição da senha, siga este link:\n$2
forgot_sending=Enviando e-mail de redefinição de senha de $2 para $1 ..
forgot_sent=.. enviado
forgot_link=O link abaixo pode ser usado para redefinir a senha do Webmin para $1 pelos próximos $2 minutos :
forgot_enosudo=Sudo não está disponível neste sistema!
forgot_ecansudo=O usuário inserido não possui permissões sudo
forgot_eunix=O usuário habilitado para sudo inserido não existe!

View File

@@ -5,6 +5,7 @@ index_eulist=Не удалось составить список пользов
index_eglist=Не удалось перечислить группы: $1
edit_title3=Создать безопасный пользователь Webmin
edit_email=Контактный адрес электронной почты
edit_twofactor=Тип двухфакторной аутентификации
edit_twofactorprov=Использование поставщика $1 с идентификатором $2
edit_twofactorcancel=Удалить требование двухфакторной аутентификации
@@ -13,6 +14,7 @@ edit_twofactoradd=Включить двухфакторный для польз
edit_locale=Регион
edit_nochange=Принудительно менять дни?
edit_egone=Выбранный пользователь больше не существует!
edit_forgot=Отправить ссылку для сброса пароля
edit_rbacdeny0=RBAC контролирует только выбранные ACL модуля
edit_rbacdeny1=RBAC контролирует все модули и ACL
edit_proto=Тип хранения
@@ -26,6 +28,7 @@ edit_safe1=Только безопасные модули
edit_unsafe=Сброс на неограниченный
save_eunixname=Имя пользователя '$1' не является пользователем Unix и поэтому не может использоваться в безопасном режиме
save_eemail=Адрес электронной почты не может содержать символ :
delete_eanonuser=Этот пользователь используется для доступа к анонимному модулю
@@ -39,6 +42,9 @@ log_joingroup=Добавлены $1 пользователи Webmin в груп
log_sql=Изменена база данных пользователей и групп
log_twofactor=Зарегистрированный пользователь $1 с двухфакторным поставщиком $2
log_onefactor=Зарегистрированный пользователь $1 для двухфакторной аутентификации
log_forgot_send=Отправлено электронное письмо для сброса пароля для пользователя $1 пользователю $2
log_forgot_reset=Сброс пароля для пользователя $1 с адресом электронной почты $2
log_forgot_admin=Администратор отправил электронное письмо для сброса пароля пользователя $1 пользователю $2
gedit_desc=Описание группы
gedit_egone=Выбранная группа больше не существует!
@@ -162,3 +168,20 @@ twofactor_failed=.. регистрация не выполнена: $1
twofactor_done=.. завершено Ваш идентификатор этого провайдера составляет <tt>$1</tt>.
twofactor_setup=Двухфакторная аутентификация еще не была включена в этой системе, но ее можно включить с помощью модуля <a href='$1'>Webmin Configuration</a>.
twofactor_ebutton=Ни одна кнопка не нажата!
forgot_title=Отправить ссылку для сброса пароля
forgot_err=Не удалось отправить ссылку для сброса пароля
forgot_header=Подробности ссылки для сброса пароля
forgot_user=Сбросить пароль пользователя
forgot_email=Метод доставки ссылки
forgot_email_def=Показать ссылку в Webmin
forgot_email_sel=Отправить ссылку по электронной почте
forgot_send=Отправить ссылку
forgot_desc=Эта страница позволяет вам сгенерировать или отправить ссылку, которая может быть использована для выбора нового пароля для пользователя Webmin на любой адрес электронной почты. Будьте осторожны, на какой адрес вы отправляете эту ссылку, так как она фактически предоставит полный доступ к логину Webmin!
forgot_adminmsg=Вы получили это письмо от администратора системы Webmin по адресу $3 для входа в систему $1.\n\nЕсли вы хотите продолжить сброс пароля, перейдите по этой ссылке:\n$2
forgot_sending=Отправляю электронное письмо для сброса пароля для $2 на $1 ..
forgot_sent=.. отправил
forgot_link=Ссылку ниже можно использовать для сброса пароля Webmin для $1 на следующие $2 минуты :
forgot_enosudo=Sudo недоступен в этой системе!
forgot_ecansudo=У введенного пользователя нет прав sudo
forgot_eunix=Введенный пользователь с правами sudo не существует!

View File

@@ -8,6 +8,7 @@ edit_title3=Vytvorte bezpečného používateľa Webmin
edit_readonly=Tento užívateľ Webmin by nemal byť upravovaný, pretože je spravovaný modulom $1. <a href='$2'>Kliknite tu</a>, aby ste toto upozornenie obišli a upravili používateľa - buďte si však vedomí, že akékoľvek manuálne zmeny môžu byť prepísané!
edit_cloneof=Klonovanie užívateľa Webmin
edit_real=Skutočné meno
edit_email=Kontaktný e-mail
edit_passlocked=Heslo sa nezmenilo už do $1 dní - účet je zablokovaný!
edit_passmax=Heslo sa nezmenilo do $1 dní - pri nasledujúcom prihlásení sa musí zmeniť
edit_passold=Heslo bolo naposledy zmenené pred $1 dňami
@@ -25,6 +26,7 @@ edit_nochange=Vynútiť dni na zmenu hesla?
edit_egone=Vybraný používateľ už neexistuje!
edit_overlay=Prekrytie osobnej témy
edit_overlayglobal=Žiadne - použite predvolené motívy
edit_forgot=Odoslať odkaz na obnovenie hesla
edit_rbacdeny0=RBAC riadi iba vybrané ACL modulov
edit_rbacdeny1=RBAC riadi všetky moduly a ACL
edit_global=Povolenia pre všetky moduly
@@ -53,6 +55,7 @@ save_edays=Vybraté nie sú žiadne dni na povolenie
save_ehours=Chýbajúce alebo neplatné časy na povolenie
save_ehours2=Čas začiatku, ktorý sa má povoliť, musí byť pred koncom
save_etemp=Možnosť vynútiť zmenu hesla pri ďalšom prihlásení nie je možné použiť, pokiaľ nie je povolená možnosť <a href='$1'>vyzývajúca používateľov na zadanie nových hesiel</a>.
save_eemail=E-mailová adresa nemôže obsahovať znak :
delete_eanonuser=Tento užívateľ sa používa na anonymný prístup k modulu
@@ -73,6 +76,9 @@ log_sync=Zmenená synchronizácia unixového používateľa
log_sql=Zmenená databáza používateľov a skupín
log_twofactor=Registrovaný používateľ $1 s dvojfaktorovým poskytovateľom $2
log_onefactor=Registrovaný používateľ $1 na dvojfaktorové overenie
log_forgot_send=E-mail na obnovenie hesla odoslaný pre používateľa $1 používateľovi $2
log_forgot_reset=Obnoviť heslo pre používateľa $1 s e-mailom $2
log_forgot_admin=Správca odoslal e-mail na obnovenie hesla pre používateľa $1 používateľovi $2
gedit_members=Používatelia a skupiny členov
gedit_desc=Popis skupiny
@@ -247,3 +253,20 @@ twofactor_failed=.. zápis zlyhal: $1
twofactor_done=.. dokončené. Vaše ID u tohto poskytovateľa je <tt>$1</tt>.
twofactor_setup=V tomto systéme zatiaľ nie je povolená dvojfaktorová autentifikácia, ale dá sa zapnúť pomocou modulu <a href='$1'>Webmin Configuration</a>.
twofactor_ebutton=Klikli na žiadne tlačidlo!
forgot_title=Odoslať odkaz na obnovenie hesla
forgot_err=Odoslanie odkazu na obnovenie hesla zlyhalo
forgot_header=Podrobnosti o odkaze na obnovenie hesla
forgot_user=Obnoviť heslo pre používateľa
forgot_email=Spôsob doručenia odkazu
forgot_email_def=Zobraziť odkaz vo Webmine
forgot_email_sel=Poslať odkaz e-mailom na
forgot_send=Odoslať odkaz
forgot_desc=Táto stránka vám umožňuje vygenerovať alebo odoslať odkaz, ktorý možno použiť na výber nového hesla pre používateľa Webminu na ľubovoľnú e-mailovú adresu. Buďte opatrní, na ktorú adresu tento odkaz odosielate, pretože vám v podstate poskytne plný prístup k prihláseniu do Webminu!
forgot_adminmsg=Tento e-mail ste dostali od administrátora systému Webmin na adrese $3 pre prihlasovacie údaje $1.\n\nAk chcete pokračovať v obnovení hesla, kliknite na tento odkaz:\n$2
forgot_sending=Odosielanie e-mailu na obnovenie hesla pre $2 na $1 ..
forgot_sent=.. odoslané
forgot_link=Nižšie uvedený odkaz možno použiť na obnovenie hesla Webmin pre $1 na nasledujúcich $2 minút :
forgot_enosudo=Sudo nie je na tomto systéme k dispozícii!
forgot_ecansudo=Zadaný používateľ nemá oprávnenia sudo
forgot_eunix=Zadaný používateľ s podporou sudo neexistuje!

View File

@@ -5,6 +5,7 @@ index_eulist=Det gick inte att lista användare: $1
index_eglist=Det gick inte att lista grupper: $1
edit_title3=Skapa säker Webmin-användare
edit_email=Kontakt-e-postadress
edit_twofactor=Tvåfaktors autentiseringstyp
edit_twofactorprov=Använda leverantör $1 med ID $2
edit_twofactorcancel=Ta bort tvåfaktors autentiseringskrav
@@ -12,6 +13,7 @@ edit_twofactornone=Ingen installation ännu
edit_twofactoradd=Aktivera tvåfaktorer för användare
edit_locale=Plats
edit_egone=Den valda användaren finns inte längre!
edit_forgot=Skicka länk för återställning av lösenord
edit_proto=Lagringstyp
edit_proto_mysql=MySQL-databas
edit_proto_postgresql=PostgreSQL-databas
@@ -26,6 +28,7 @@ save_eunixname=Användarnamnet '$1' är inte en Unix-användare och kan därför
save_eoverlay=Ett temaöverlägg kan inte väljas om inte ett tema är det
save_eminsize=Saknad eller icke-numerisk minsta lösenordslängd
save_etemp=Alternativet att tvinga lösenordsändring vid nästa inloggning kan inte användas om <a href='$1'>uppmanar användare att ange nya lösenord</a> är aktiverat
save_eemail=E-postadressen får inte innehålla tecknet :
delete_eanonuser=Den här användaren används för anonym modulåtkomst
@@ -41,6 +44,9 @@ log_sync=Ändrad unix användarsynkronisering
log_sql=Ändrad användare och gruppdatabas
log_twofactor=Registrerad användare $1 med tvåfaktureleverantör $2
log_onefactor=Inskrivna användare $1 för tvåfaktorautentisering
log_forgot_send=Skickade e-postmeddelande för återställning av lösenord för användare $1 till $2
log_forgot_reset=Återställ lösenord för användare $1 med e-postadress $2
log_forgot_admin=Administratören skickade ett e-postmeddelande med lösenordsåterställning för användaren $1 till $2
gedit_desc=Gruppbeskrivning
gedit_egone=Den valda gruppen finns inte längre!
@@ -162,3 +168,20 @@ twofactor_failed=.. anmälan misslyckades: $1
twofactor_done=.. komplett. Ditt ID med denna leverantör är <tt>$1</tt>.
twofactor_setup=Tvåfaktorsautentisering har inte aktiverats i det här systemet ännu, men kan aktiveras med <a href='$1'>Webmin Configuration</a> -modulen.
twofactor_ebutton=Ingen knapp klickade!
forgot_title=Skicka länk för återställning av lösenord
forgot_err=Misslyckades med att skicka länken för återställning av lösenord
forgot_header=Detaljer om länken för återställning av lösenord
forgot_user=Återställ lösenord för användaren
forgot_email=Länkleveransmetod
forgot_email_def=Visa länk i Webmin
forgot_email_sel=Skicka länk via e-post till
forgot_send=Skicka länk
forgot_desc=Den här sidan låter dig generera eller skicka en länk som kan användas för att välja ett nytt lösenord för en Webmin-användare till vilken e-postadress som helst. Var försiktig med vilken adress du skickar den här länken till, eftersom den i praktiken ger fullständig åtkomst till Webmin-inloggningen!
forgot_adminmsg=Du får detta e-postmeddelande från administratören för Webmin-systemet på $3, för inloggningen $1.\n\nOm du vill fortsätta med att återställa lösenordet, följ den här länken:\n$2
forgot_sending=Skickar e-post för återställning av lösenord för $2 till $1 ..
forgot_sent=.. skickat
forgot_link=Länken nedan kan användas för att återställa Webmin-lösenordet för $1 under de kommande $2 minuterna :
forgot_enosudo=Sudo är inte tillgängligt på det här systemet!
forgot_ecansudo=Den angivna användaren har inte sudo-behörigheter
forgot_eunix=Den angivna sudo-kapabla användaren finns inte!

View File

@@ -10,6 +10,7 @@ edit_title3=Güvenli Webmin Kullanıcısı Oluşturun
edit_readonly=Bu Webmin kullanıcısı $1 modülü tarafından yönetildiği için düzenlenmemelidir. Bu uyarıyı atlamak ve kullanıcıyı yine de düzenlemek için <a href='$2'>burayı tıklayın</a> - ancak manuel değişikliklerin üzerine yazılabileceğini unutmayın!
edit_cloneof=Webmin kullanıcısını kopyalama
edit_real=Gerçek ad
edit_email=İletişim e-postası
edit_passlocked=$1 gün boyunca şifre değiştirilmedi - hesap kilitlendi!
edit_passmax=$1 gün boyunca şifre değiştirilmedi - bir sonraki girişte değiştirilmelidir
edit_passold=Şifre en son değiştirildi $1 gün önce
@@ -28,6 +29,7 @@ edit_nochange=Şifre değiştirme günleri uygulansın mı?
edit_egone=Seçilen kullanıcı artık mevcut değil!
edit_overlay=Kişisel tema kaplaması
edit_overlayglobal=Yok - tema varsayılanlarını kullan
edit_forgot=Şifre Sıfırlama Bağlantısını Gönder
edit_rbacdeny=RBAC erişim modu
edit_rbacdeny0=RBAC yalnızca seçilen modül ACL'lerini kontrol eder
edit_rbacdeny1=RBAC tüm modülleri ve ACL'leri kontrol eder
@@ -63,6 +65,7 @@ save_edays=Seçime izin verilecek gün yok
save_ehours=İzin vermek için eksik veya geçersiz zamanlar
save_ehours2=İzin vermek için başlangıç zamanı bitmeden olmalıdır
save_etemp=<a href='$1'>kullanıcılardan yeni şifreler girmelerini istemediklerinde</a> bir sonraki girişte şifre değişikliğini zorlama seçeneği kullanılamaz
save_eemail=E-posta adresi : karakterini içeremez
delete_eanonuser=Bu kullanıcı anonim modül erişimi için kullanılıyor
@@ -85,6 +88,9 @@ log_sync=Unix kullanıcı senkronizasyonu değiştirildi
log_sql=Değişen kullanıcı ve grup veritabanı
log_twofactor=İki faktörlü $2 ile kayıtlı $1 kullanıcısı
log_onefactor=İki faktörlü kimlik doğrulama için kaydı iptal edilen $1 kullanıcısı
log_forgot_send=$1 kullanıcısı için $2'ye şifre sıfırlama e-postası gönderildi
log_forgot_reset=$2 e-posta adresine sahip $1 kullanıcısı için şifreyi sıfırla
log_forgot_admin=Yönetici $1 - $2 kullanıcısı için parola sıfırlama e-postası gönderdi
gedit_members=Üye kullanıcılar ve gruplar
gedit_desc=Grup açıklaması
@@ -268,3 +274,20 @@ twofactor_failed=.. kayıt başarısız oldu: $1
twofactor_done=.. tamamlayınız. Bu sağlayıcıdaki kimliğiniz <tt>$1</tt>.
twofactor_setup=İki faktörlü kimlik doğrulama henüz bu sistemde etkinleştirilmedi, ancak <a href='$1'>Webmin Yapılandırması</a> modülü kullanılarak açılabilir.
twofactor_ebutton=Hiçbir düğme tıklanmadı!
forgot_title=Şifre Sıfırlama Bağlantısını Gönder
forgot_err=Şifre sıfırlama bağlantısı gönderilemedi
forgot_header=Şifre sıfırlama bağlantısı ayrıntıları
forgot_user=Kullanıcı için şifreyi sıfırla
forgot_email=Bağlantı teslim yöntemi
forgot_email_def=Bağlantıyı Webmin'de görüntüle
forgot_email_sel=Bağlantıyı e-posta ile gönder
forgot_send=Bağlantıyı Gönder
forgot_desc=Bu sayfa, bir Webmin kullanıcısı için yeni bir parola seçmek için kullanılabilecek bir bağlantı oluşturmanıza veya herhangi bir e-posta adresine göndermenize olanak tanır. Bu bağlantıyı hangi adrese gönderdiğinize dikkat edin, çünkü bu, Webmin oturum açma işlemine tam erişim sağlayacaktır!
forgot_adminmsg=Bu e-postayı, $3 adresindeki Webmin sisteminin yöneticisinden, $1 girişi için alıyorsunuz.\n\nŞifreyi sıfırlamaya devam etmek istiyorsanız, şu bağlantıyı izleyin:\n$2
forgot_sending=$2 için şifre sıfırlama e-postası $1 adresine gönderiliyor ..
forgot_sent=.. gönderilmiş
forgot_link=Aşağıdaki bağlantı $1 için Webmin şifresini önümüzdeki $2 dakika boyunca sıfırlamak için kullanılabilir :
forgot_enosudo=Bu sistemde Sudo mevcut değil!
forgot_ecansudo=Girilen kullanıcı sudo izinlerine sahip değil
forgot_eunix=Girilen sudo-capable kullanıcı bulunamadı!

View File

@@ -34,6 +34,7 @@ edit_rights=Права доступу користувачів Webmin
edit_user=Ім'я користувача
edit_cloneof=Клонування користувача Webmin
edit_real=Справжнє ім'я
edit_email=Контактна електронна адреса
edit_group=Член групи
edit_pass=Пароль
edit_same=Те саме, що Unix
@@ -88,6 +89,7 @@ edit_selall=Вибрати все
edit_invert=Інвертувати вибір
edit_hide=Сховати невикористаним
edit_switch=Переключитися на користувача
edit_forgot=Надіслати посилання для скидання пароля
edit_return2=Група Вебмін
edit_rbacdeny=Режим доступу RBAC
edit_rbacdeny0=RBAC керує лише вибраними модулями ACL
@@ -145,6 +147,7 @@ save_edays=Немає днів, щоб дозволити вибране
save_ehours=Відсутній або недійсний час для дозволу
save_ehours2=Час початку дозволення повинен бути до кінця
save_etemp=Параметр примусити змінити пароль при наступному вході не можна використовувати, якщо <a href='$1'>спонукає користувачів вводити нові паролі</a>
save_eemail=Адреса електронної пошти не може містити символ :
delete_eself=Ви не можете видалити себе
delete_ecannot=Вам заборонено видаляти користувачів
@@ -242,6 +245,9 @@ log_sync=Змінено синхронізацію користувача Unix
log_sql=Змінено базу даних користувачів та груп
log_twofactor=Зареєстрований користувач $1 з двофакторним постачальником $2
log_onefactor=Користувач, який не був зареєстрований, $1 для двофакторної аутентифікації
log_forgot_send=Надіслано електронного листа для скидання пароля для користувача $1 до $2
log_forgot_reset=Скинути пароль для користувача $1 з електронною поштою $2
log_forgot_admin=Адміністратор надіслав електронного листа для скидання пароля для користувача $1 користувачу $2
gedit_ecannot=Вам заборонено редагувати групи
gedit_title=Редагування групи Webmin
@@ -504,3 +510,20 @@ twofactor_failed=.. реєстрація не вдалася: $1
twofactor_done=.. завершено. Ваш ідентифікатор у цього постачальника <tt>$1</tt>.
twofactor_setup=Двофакторна автентифікація ще не ввімкнена в цій системі, але її можна ввімкнути за допомогою модуля <a href='$1'>Конфігурація Webmin</a>.
twofactor_ebutton=Жодна кнопка не натиснута!
forgot_title=Надіслати посилання для скидання пароля
forgot_err=Не вдалося надіслати посилання для скидання пароля
forgot_header=Деталі посилання для скидання пароля
forgot_user=Скинути пароль для користувача
forgot_email=Спосіб доставки посилання
forgot_email_def=Відобразити посилання у Webmin
forgot_email_sel=Надіслати посилання електронною поштою на
forgot_send=Надіслати посилання
forgot_desc=Ця сторінка дозволяє вам згенерувати або надіслати посилання, яке можна використовувати для вибору нового пароля для користувача Webmin, на будь-яку адресу електронної пошти. Будьте уважні, на яку адресу ви надсилаєте це посилання, оскільки воно фактично надасть повний доступ до входу в Webmin!
forgot_adminmsg=Ви отримали цей електронний лист від адміністратора системи Webmin за адресою $3, для входу $1.\n\nЯкщо ви хочете продовжити скидання пароля, перейдіть за цим посиланням:\n$2
forgot_sending=Надсилання електронного листа для скидання пароля для $2 на $1 ..
forgot_sent=.. відправлено
forgot_link=Посилання нижче можна використовувати для скидання пароля Webmin для $1 протягом наступних $2 хвилин :
forgot_enosudo=Sudo недоступний на цій системі!
forgot_ecansudo=Введений користувач не має прав sudo
forgot_eunix=Введений користувач із підтримкою sudo не існує!

View File

@@ -1,5 +1,30 @@
edit_email=联系邮箱
edit_egone=选定的用户不再存在!
edit_forgot=发送密码重置链接
save_eemail=电子邮件地址不能包含:字符
cert_ebrowser=Webmin 不知道如何为您的浏览器颁发客户端证书 ($1)
log_forgot_send=已将用户 $1 的密码重置电子邮件发送至 $2
log_forgot_reset=为电子邮件为 $2 的用户 $1 重置密码
log_forgot_admin=管理员已将用户 $1 的密码重置电子邮件发送给 $2
gsave_edesc=无效描述 - 不允许使用 : 字符
forgot_title=发送密码重置链接
forgot_err=无法发送密码重置链接
forgot_header=密码重置链接详情
forgot_user=重置用户密码
forgot_email=链接传递方式
forgot_email_def=在 Webmin 中显示链接
forgot_email_sel=通过电子邮件发送链接至
forgot_send=发送链接
forgot_desc=此页面允许您生成或发送一个链接,该链接可用于为 Webmin 用户选择新密码,并发送到任何电子邮件地址。请谨慎选择发送此链接的地址,因为它实际上会授予 Webmin 登录的完全访问权限!
forgot_adminmsg=您将收到来自 $3 的 Webmin 系统管理员的这封电子邮件,登录名为 $1。\n\n如果您想继续重置密码请点击此链接:\n$2
forgot_sending=正在将 $2 的密码重置电子邮件发送至 $1 ..
forgot_sent=.. 发送
forgot_link=下面的链接可用于重置 $1 在接下来的 $2 分钟内的 Webmin 密码:
forgot_enosudo=Sudo 在本系统上不可用!
forgot_ecansudo=输入的用户没有 sudo 权限
forgot_eunix=输入的具有 sudo 权限的用户不存在!

View File

@@ -10,6 +10,7 @@ edit_title3=創建安全的Webmin用戶
edit_readonly=該Webmin用戶不能編輯因為它是由 $1 模塊管理的。 <a href='$2'>單擊此處</a>以繞過此警告並仍然編輯用戶-但請注意,任何手動更改都可能被覆蓋!
edit_cloneof=克隆Webmin用戶
edit_real=真正的名字
edit_email=聯絡信箱
edit_passlocked=$1 天未更改密碼-帳戶已鎖定!
edit_passmax=$1 天未更改密碼-下次登錄時必須更改
edit_passold=密碼最後一次更改是 $1 天前
@@ -30,6 +31,7 @@ edit_overlay=個人主題疊加
edit_overlayglobal=無-使用主題默認值
edit_hide=隱藏未使用
edit_switch=切換到用戶
edit_forgot=發送密碼重設連結
edit_return=Webmin用戶
edit_return2=Webmin組
edit_rbacdeny=RBAC訪問模式
@@ -67,6 +69,7 @@ save_edays=沒有天數可供選擇
save_ehours=缺少時間或無效時間
save_ehours2=允許的開始時間必須在結束之前
save_etemp=除非啟用了<a href='$1'>提示用戶輸入新密碼</a>的選項,否則不能使用在下次登錄時強制更改密碼的選項。
save_eemail=電子郵件地址不能包含:字符
delete_eanonuser=該用戶正用於匿名模塊訪問
@@ -93,6 +96,9 @@ log_sync=更改了Unix用戶同步
log_sql=更改的用戶和組數據庫
log_twofactor=使用兩因素提供程序 $2 的已註冊用戶 $1
log_onefactor=取消註冊用戶 $1 進行雙重身份驗證
log_forgot_send=已將使用者 $1 的密碼重設電子郵件傳送至 $2
log_forgot_reset=為電子郵件為 $2 的使用者 $1 重設密碼
log_forgot_admin=管理員已將使用者 $1 的密碼重設電子郵件傳送給 $2
gedit_members=會員用戶和組
gedit_desc=團體簡介
@@ -296,3 +302,20 @@ twofactor_failed=..註冊失敗: $1
twofactor_done=..完成。您在此提供程序處的ID是<tt>$1</tt>。
twofactor_setup=此系統上尚未啟用兩因素身份驗證,但可以使用<a href='$1'>Webmin Configuration</a>模塊將其打開。
twofactor_ebutton=沒有點擊按鈕!
forgot_title=發送密碼重設連結
forgot_err=無法發送密碼重設鏈接
forgot_header=密碼重置連結詳情
forgot_user=重置用戶密碼
forgot_email=連結傳遞方式
forgot_email_def=在 Webmin 中顯示鏈接
forgot_email_sel=透過電子郵件發送連結至
forgot_send=發送連結
forgot_desc=此頁面可讓您產生或傳送可用於為 Webmin 使用者選擇新密碼的連結至任何電子郵件地址。請小心將此連結傳送到哪個位址,因為它將有效授予對 Webmin 登入的完全存取權!
forgot_adminmsg=您將收到來自 $3 的 Webmin 系統管理員的這封電子郵件,登入名為 $1。 \n\n如果您想繼續重設密碼請點擊此連結:\n$2
forgot_sending=正在將 $2 的密碼重設電子郵件發送至 $1 ..
forgot_sent=.. 發送
forgot_link=下面的連結可用於重設 $1 在接下來的 $2 分鐘內的 Webmin 密碼:
forgot_enosudo=Sudo 在本系統上不可用!
forgot_ecansudo=輸入的使用者沒有 sudo 權限
forgot_eunix=輸入的具有 sudo 權限的使用者不存在!

View File

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

View File

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

View File

@@ -26,82 +26,94 @@ $last_restart_time_flag = $module_var_directory."/restart-flag";
# if the Apache binary changes, when Webmin is upgraded, or once every five
# minutes if automatic rebuilding is enabled.
if ($module_name ne 'htaccess') {
local %oldsite;
local $httpd = &find_httpd();
local @st = stat($httpd);
&read_file($site_file, \%oldsite);
local @sst = stat($site_file);
if ($oldsite{'path'} ne $httpd ||
$oldsite{'size'} != $st[7] ||
$oldsite{'webmin'} != &get_webmin_version() ||
$config{'auto_mods'} && $sst[9] < time()-5*60) {
# Need to build list of supported modules
local ($ver, $mods, $fullver) = &httpd_info($httpd);
if ($ver) {
my @allmods = &available_modules();
local @mods = map { "$_/$ver" }
&configurable_modules(\@allmods);
foreach my $m (@mods) {
if ($m =~ /(\S+)\/(\S+)/) {
$httpd_modules{$1} = $2;
}
}
# Call again now that known modules have been set, as
# sometimes there are dependencies due to LoadModule
# statements in an IfModule block
undef(@get_config_cache);
@allmods = &available_modules();
@mods = map { "$_/$ver" }
&configurable_modules(\@allmods);
local %site = ( 'size' => $st[7],
'path' => $httpd,
'modules' => join(' ', @mods),
'allmodules' => join(' ', @allmods),
'version' => $ver,
'fullversion' => $fullver,
'webmin' => &get_webmin_version() );
&lock_file($site_file);
&write_file($site_file, \%site);
chmod(0644, $site_file);
&unlock_file($site_file);
}
}
}
# Read the site-specific setup file, then require in all the module-specific
# .pl files
if (&read_file($site_file, \%site)) {
local($m, $f, $d);
$httpd_size = $site{'size'};
foreach $m (split(/\s+/, $site{'modules'})) {
if ($m =~ /(\S+)\/(\S+)/) {
$httpd_modules{$1} = $2;
}
}
foreach $m (split(/\s+/, $site{'allmodules'})) {
$all_httpd_modules{$m} = $site{'version'};
}
foreach $m (keys %httpd_modules) {
if (!-r "$module_root_directory/$m.pl") {
delete($httpd_modules{$m});
}
}
foreach $f (split(/\s+/, $site{'htaccess'})) {
if (-r $f) { push(@htaccess_files, $f); }
}
foreach $m (keys %httpd_modules) {
do "$m.pl";
}
foreach $d (split(/\s+/, $site{'defines'})) {
$httpd_defines{$d}++;
}
&create_site_file();
}
&read_site_file();
$apache_docbase = $config{'apache_docbase'} ? $config{'apache_docbase'} :
$httpd_modules{'core'} >= 2.0 ?
"http://httpd.apache.org/docs-2.0/mod/" :
"http://httpd.apache.org/docs/mod/";
# create_site_file()
# If the Apache binary or Webmin version has changed, create the site
# file containing all known Apache modules
sub create_site_file
{
my %oldsite;
my $httpd = &find_httpd();
my @st = stat($httpd);
&read_file($site_file, \%oldsite);
my @sst = stat($site_file);
if ($oldsite{'path'} ne $httpd ||
$oldsite{'size'} != $st[7] ||
$oldsite{'webmin'} != &get_webmin_version() ||
$config{'auto_mods'} && $sst[9] < time()-5*60) {
# Need to build list of supported modules
my ($ver, $mods, $fullver) = &httpd_info($httpd);
if ($ver) {
my @allmods = &available_modules();
my @mods = map { "$_/$ver" }
&configurable_modules(\@allmods);
foreach my $m (@mods) {
if ($m =~ /(\S+)\/(\S+)/) {
$httpd_modules{$1} = $2;
}
}
# Call again now that known modules have been set, as
# sometimes there are dependencies due to LoadModule
# statements in an IfModule block
undef(@get_config_cache);
@allmods = &available_modules();
@mods = map { "$_/$ver" }
&configurable_modules(\@allmods);
my %site = ( 'size' => $st[7],
'path' => $httpd,
'modules' => join(' ', @mods),
'allmodules' => join(' ', @allmods),
'version' => $ver,
'fullversion' => $fullver,
'webmin' => &get_webmin_version() );
&lock_file($site_file);
&write_file($site_file, \%site);
chmod(0644, $site_file);
&unlock_file($site_file);
}
}
}
# read_site_file()
# Read the site-specific setup file, then require in all the module-specific
# .pl files
sub read_site_file
{
if (&read_file($site_file, \%site)) {
foreach my $m (split(/\s+/, $site{'modules'})) {
if ($m =~ /(\S+)\/(\S+)/) {
$httpd_modules{$1} = $2;
}
}
foreach my $m (split(/\s+/, $site{'allmodules'})) {
$all_httpd_modules{$m} = $site{'version'};
}
foreach my $m (keys %httpd_modules) {
if (!-r "$module_root_directory/$m.pl") {
delete($httpd_modules{$m});
}
}
foreach my $f (split(/\s+/, $site{'htaccess'})) {
if (-r $f) { push(@htaccess_files, $f); }
}
foreach my $m (keys %httpd_modules) {
do "$m.pl";
}
foreach my $d (split(/\s+/, $site{'defines'})) {
$httpd_defines{$d}++;
}
}
}
# parse_config_file(handle, lines, file, [recursive])
# Parses lines of text from some config file into a data structure. The
# return value is an array of references, one for each directive in the file.
@@ -2274,5 +2286,15 @@ sub format_config_allowed
return $config{'format_config'};
}
# clear_apache_modules_cache()
# If new Apache modules were enabled, force re-gen of the site file
# that contains the modules cache
sub clear_apache_modules_cache
{
&unlink_file($site_file);
&create_site_file();
&read_site_file();
}
1;

View File

@@ -23,7 +23,7 @@ foreach $m (@mods) {
}
# Force re-detection of modules
unlink($site_file);
&clear_apache_modules_cache();
# Force restart Apache
if ($changed && &is_apache_running()) {

View File

@@ -254,7 +254,7 @@ storage_title1=Daemon Storage را ایجاد کنید
storage_title2=ویرایش ذخیره سازی Daemon
storage_header=جزئیات شبح ذخیره سازی از راه دور
storage_egone=Daemon ذخیره سازی دیگر وجود ندارد!
storage_name=نام نمونه‌ی ذخیره سازی
storage_name=نام دیمن ذخیره‌سازی
storage_address=نام میزبان یا آدرس IP
storage_port=پورت SD Bacula
storage_pass=رمز عبور Bacula SD
@@ -482,7 +482,7 @@ log_delete_fdirector=مدیر مدیر Daemon پرونده$1 حذف شد
log_delete_fdirectors=$1 کارگردانان Daemon پرونده حذف شد
log_create_sdirector=مدیر Daemon ذخیره سازی$1 ایجاد شد
log_modify_sdirector=مدیر Daemon ذخیره سازی اصلاح شده$1
log_delete_sdirector=مدیر Daemon فضای ذخیره‌سازی$1 حذف شد
log_delete_sdirector=مدیر دیمن ذخیره‌سازی $1 حذف شد
log_delete_sdirectors=مدیر$1 شبنم ذخیره سازی حذف شد
log_stop=daemons Bacula متوقف شد
log_start=Daemons Bacula را شروع کرد

View File

@@ -6,10 +6,11 @@ use warnings;
use 5.014;
no warnings 'utf8';
use File::Spec;
use File::Basename;
use File::Find;
use JSON::PP;
use JSON::XS;
use HTTP::Tiny;
eval "use HTML::Entities";
use List::MoreUtils qw(any uniq);
@@ -940,7 +941,11 @@ sub translate
# Extract translation on success
if ($ts) {
$tr = JSON::PP->new->decode($rs->{'content'});
# Fix Farsi
if ($target eq 'fa') {
$rs->{'content'} = decode('utf-8', $rs->{'content'});
}
$tr = JSON::XS->new->decode($rs->{'content'});
$tr = $tr->{'data'}->{'translations'}[0]->{'translatedText'};
return $tr;
}
@@ -1641,6 +1646,10 @@ sub go
}
my $file = $mpath . "/$code";
my $file_auto = $mpath . "/$code.$language_suffix";
local $SIG{__WARN__} = sub {
my $warning = shift;
warn $warning unless $warning =~ /Wide character/;
};
if (%language) {
write_file($file, \%language);
sort_file_by($file, $mfile);

View File

@@ -64,7 +64,7 @@ sub run
};
root($o->{'config'}, \&$conf_check);
my $service = ($o->{'config'} =~ /usermin/ ? 'usermin' : 'webmin');
my $systemctlcmd = `which systemctl`;
my $systemctlcmd = &has_command('systemctl');
$systemctlcmd =~ s/\s+$//;
if ($o->{'cmd'} =~ /^(start|stop|restart|reload)$/) {
my $rs = system("$o->{'config'}/$o->{'cmd'} $service");

View File

@@ -95,8 +95,10 @@ sub main {
undef, 1, undef, undef, 5);
if ($latest_known_versions_remote &&
!$latest_known_versions_remote_error) {
%versions_remote = map{split /=/, $_}
(split(/\n/, $latest_known_versions_remote));
%versions_remote = map {
my ($k, $v) = split(/=/, $_, 2);
defined($v) ? ($k => $v) : ();
} split(/\n/, $latest_known_versions_remote);
} elsif ($latest_known_versions_remote_error) {
say BRIGHT_YELLOW, "Warning: ", RESET, "Cannot fetch remote packages versions list - $latest_known_versions_remote_error";
}

View File

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

View File

@@ -184,6 +184,7 @@ slave_ecannot=You are not allowed to edit this zone
slave_opts=Zone Options
slave_masters=Master servers
slave_masterport=Server port
slave_masterkey=Server key
slave_max=Maximum transfer time
slave_file=Records file
slave_check=Check names?
@@ -1355,7 +1356,7 @@ xfer_done=.. from $1 : Completed OK
xfer_count=Test transfer successfully fetched $1 records from at least one nameserver. Actual transfers by BIND should also succeed.
xfer_none=Test transfer appeared to succeed, but didn't actually fetch any records!
tls_title=SSL Keys And Certificates
tls_title=SSL Keys and Certificates
tls_ecannot=You are not allowed to edit SSL keys and certificates
tls_esupport=SSL keys and certificates are not supported on this system
tls_name=Key name
@@ -1363,8 +1364,6 @@ tls_key=Key file
tls_cert=Certificate file
tls_ca=CA certificate file
tls_ca_def=None required
tls_ecannot=You are not allowed to edit SSL keys and certificates
tls_esupport=DNS over SSL is not supported on this system
tls_none=No SSL keys have been added yet.
tls_add=Add a new SSL key.
tls_desc=The SSL keys and certificates listed on this page can be used to enable DNS over SSL/TLS.

View File

@@ -59,6 +59,15 @@ print &ui_table_row($text{'slave_masterport'},
&ui_opt_textbox("port", undef, 5, $text{'default'},
$text{'slave_master_port'}), 3);
# Master key
my @keys = &find("key", $conf);
if (@keys) {
print &ui_table_row($text{'slave_masterkey'},
&ui_select("key", undef,
[ [ undef, $text{'slave_nokey'} ],
(map { $_->{'value'} } @keys) ]));
}
# Create on slave servers?
my @servers = grep { $_->{'sec'} } &list_slave_servers();
if (@servers && $access{'remote'}) {

View File

@@ -8,6 +8,7 @@ require './cron-lib.pl';
if (!$in{'new'}) {
$job = $jobs[$in{'idx'}];
$job || &error($text{'edit_egone'});
&can_edit_user(\%access, $job->{'user'}) ||
&error($text{'edit_ecannot'});
&ui_print_header(undef, $text{'edit_title'}, "");
@@ -17,6 +18,9 @@ else {
if (defined($in{'clone'})) {
# Default to clone source
$clone = $jobs[$in{'clone'}];
$clone || &error($text{'edit_egone'});
&can_edit_user(\%access, $clone->{'user'}) ||
&error($text{'edit_ecannot'});
$job = { %$clone };
}
elsif ($config{'vixie_cron'}) {

View File

@@ -41,6 +41,7 @@ index_bootdesc=Change this setting to enable or disable starting the scheduled c
edit_title=Edit Cron Job
create_title=Create Cron Job
edit_ecannot=You are not allowed to edit cron jobs for this user
edit_egone=Job does not exist
edit_details=Job Details
edit_user=Execute cron job as
edit_active=Active?

View File

@@ -4,9 +4,9 @@ BEGIN { push(@INC, ".."); };
use WebminCore;
&init_config();
@supported_auths = ( "anonymous", "plain", "digest-md5", "cram-md5", "apop",
"scram-sha-1", "scram-sha-256", "ntlm", "gss-spnego",
"gssapi", "rpa", "otp", "skey", "external",
@supported_auths = ( "anonymous", "plain", "login", "digest-md5", "cram-md5",
"apop", "scram-sha-1", "scram-sha-256", "ntlm",
"gss-spnego", "gssapi", "rpa", "otp", "skey", "external",
"oauthbearer", "xoauth2" );
@mail_envs = ( undef, "maildir:~/Maildir", "mbox:~/mail/:INBOX=/var/mail/%u",
"maildir:~/Maildir:mbox:~/mail/" );
@@ -555,6 +555,16 @@ return 0 if (!$ver);
return &compare_version_numbers($ver, $wantver) >= 0;
}
# version_below(ver)
# Returns 1 if running below some version
sub version_below
{
local ($wantver) = @_;
local $ver = &get_dovecot_version();
return 0 if (!$ver);
return &compare_version_numbers($ver, $wantver) < 0;
}
sub list_lock_methods
{
local ($forindex) = @_;

View File

@@ -14,7 +14,11 @@ print &ui_table_row($text{'login_realms'},
&ui_opt_textbox("realms", $realms, 40, $text{'login_none'}), 3);
# Default authentication realm
$realm = &find_value("auth_default_realm", $conf);
$realm = &find_value(
&version_atleast("2.4")
? "auth_default_domain"
: "auth_default_realm",
$conf);
print &ui_table_row($text{'login_realm'},
&ui_opt_textbox("realm", $realm, 10, $text{'default'}));
@@ -87,25 +91,27 @@ elsif ($userdb =~ /^sql\s+(.*)/) {
else {
$other = $userdb;
}
print &ui_table_row($text{'login_userdb'},
&ui_radio("usermode", $usermode,
[ [ "passwd", $text{'login_passwd'}."<br>" ],
[ "passwd-file", &text('login_passwdfile',
&ui_textbox("passwdfile", $passwdfile, 30))."<br>" ],
[ "static", &text('login_static',
&ui_textbox("uid", $uid, 6),
&ui_textbox("gid", $gid, 6),
&ui_textbox("home", $home, 20))."<br>" ],
[ "vpopmail", $text{'login_vpopmail'}."<br>" ],
[ "ldap", &text('login_ldap',
&ui_textbox("ldap", $ldap, 30))."<br>" ],
[ "pgsql", &text('login_pgsql',
&ui_textbox("pgsql", $pgsql, 30))."<br>" ],
[ "sql", &text('login_sql',
&ui_textbox("sql", $sql, 30))."<br>" ],
[ "", &text('login_other',
&ui_textbox("other", $other, 30))."<br>" ],
]), 3);
if (&version_below("2.4")) {
print &ui_table_row($text{'login_userdb'},
&ui_radio("usermode", $usermode,
[ [ "passwd", $text{'login_passwd'}."<br>" ],
[ "passwd-file", &text('login_passwdfile',
&ui_textbox("passwdfile", $passwdfile, 30))."<br>" ],
[ "static", &text('login_static',
&ui_textbox("uid", $uid, 6),
&ui_textbox("gid", $gid, 6),
&ui_textbox("home", $home, 20))."<br>" ],
[ "vpopmail", $text{'login_vpopmail'}."<br>" ],
[ "ldap", &text('login_ldap',
&ui_textbox("ldap", $ldap, 30))."<br>" ],
[ "pgsql", &text('login_pgsql',
&ui_textbox("pgsql", $pgsql, 30))."<br>" ],
[ "sql", &text('login_sql',
&ui_textbox("sql", $sql, 30))."<br>" ],
[ "", &text('login_other',
&ui_textbox("other", $other, 30))."<br>" ],
]), 3);
}
# Password authentication system
if (&find("auth_passdb", $conf, 2)) {
@@ -174,46 +180,49 @@ elsif ($passdb =~ /^checkpassword\s+(.*)$/) {
else {
$pother = $passdb;
}
print &ui_table_row($text{'login_passdb'},
&ui_radio("passmode", $passmode,
[ [ "passwd", $text{'login_passwd2'}."<br>" ],
[ "shadow", $text{'login_shadow'}."<br>" ],
[ "dpam", &text('login_dpam')."<br>" ],
$alpha_opts ?
( [ "pam", &text('login_pam2',
&ui_textbox("ppam", $ppam, 10),
&ui_checkbox("ppam_session", 1,
$text{'login_session'}, $psession),
&ui_opt_textbox("ppam_ckey", $pckey, 10,
$text{'login_none'}))."<br>" ]
) :
( [ "pam", &text('login_pam',
&ui_textbox("ppam", $ppam, 10))."<br>" ]
),
[ "passwd-file", &text('login_passwdfile',
&ui_textbox("ppasswdfile", $ppasswdfile, 30))."<br>" ],
[ "vpopmail", $text{'login_vpopmail'}."<br>" ],
[ "ldap", &text('login_ldap',
&ui_textbox("pldap", $pldap, 30))."<br>" ],
[ "pgsql", &text('login_pgsql',
&ui_textbox("ppgsql", $ppgsql, 30))."<br>" ],
[ "sql", &text('login_sql',
&ui_textbox("psql", $psql, 30))."<br>" ],
$alpha_opts ?
( [ "bsdauth",
&text('login_bsdauth',
&ui_opt_textbox("bsdauth_ckey", $pbckey, 10,
$text{'login_none'}))."<br>" ],
[ "checkpassword",
&text('login_checkpassword',
&ui_textbox("checkpassword", $checkpassword, 40))."<br>" ],
) :
( ),
[ "", &text('login_other',
&ui_textbox("pother", $pother, 30))."<br>" ],
]), 3);
print &ui_table_hr();
if (&version_below("2.4")) {
print &ui_table_row($text{'login_passdb'},
&ui_radio("passmode", $passmode,
[ [ "passwd", $text{'login_passwd2'}."<br>" ],
[ "shadow", $text{'login_shadow'}."<br>" ],
[ "dpam", &text('login_dpam')."<br>" ],
$alpha_opts ?
( [ "pam", &text('login_pam2',
&ui_textbox("ppam", $ppam, 10),
&ui_checkbox("ppam_session", 1,
$text{'login_session'}, $psession),
&ui_opt_textbox("ppam_ckey", $pckey, 10,
$text{'login_none'}))."<br>" ]
) :
( [ "pam", &text('login_pam',
&ui_textbox("ppam", $ppam, 10))."<br>" ]
),
[ "passwd-file", &text('login_passwdfile',
&ui_textbox("ppasswdfile", $ppasswdfile, 30))."<br>" ],
[ "vpopmail", $text{'login_vpopmail'}."<br>" ],
[ "ldap", &text('login_ldap',
&ui_textbox("pldap", $pldap, 30))."<br>" ],
[ "pgsql", &text('login_pgsql',
&ui_textbox("ppgsql", $ppgsql, 30))."<br>" ],
[ "sql", &text('login_sql',
&ui_textbox("psql", $psql, 30))."<br>" ],
$alpha_opts ?
( [ "bsdauth",
&text('login_bsdauth',
&ui_opt_textbox("bsdauth_ckey", $pbckey, 10,
$text{'login_none'}))."<br>" ],
[ "checkpassword",
&text('login_checkpassword',
&ui_textbox("checkpassword", $checkpassword, 40))."<br>" ],
) :
( ),
[ "", &text('login_other',
&ui_textbox("pother", $pother, 30))."<br>" ],
]), 3);
print &ui_table_hr();
}
$fuid = &find_value("first_valid_uid", $conf);
print &ui_table_row($text{'login_fuid'},
@@ -232,7 +241,11 @@ $lgid = &find_value("last_valid_gid", $conf);
print &ui_table_row($text{'login_lgid'},
&ui_opt_textbox("lgid", $lgid, 6, &getdef("last_valid_gid", \@mmap)));
$extra = &find_value("mail_extra_groups", $conf);
$extra = &find_value(&version_atleast("2")
? "mail_access_groups"
: "mail_extra_groups",
$conf);
print &ui_table_row($text{'login_extra'},
&ui_opt_textbox("extra", $extra, 50, $text{'login_none'})."\n".
&group_chooser_button("extra", 1), 3);

View File

@@ -13,25 +13,49 @@ $envmode = 4;
if (&find("default_mail_env", $conf, 2)) {
$env = &find_value("default_mail_env", $conf);
}
elsif (&find("mail_path", $conf, 2)) {
$env = &find_value("mail_path", $conf);
}
else {
$env = &find_value("mail_location", $conf);
}
if ($env =~ s/:INDEX=([^:]+)//) {
$index = $1;
}
elsif (&find("mail_index_path", $conf, 2)) {
$index = &find_value("mail_index_path", $conf);
}
if ($env =~ s/:CONTROL=([^:]+)//) {
$control = $1;
}
elsif (&find("mail_control_path", $conf, 2)) {
$control = &find_value("mail_control_path", $conf);
}
for($i=0; $i<@mail_envs; $i++) {
$envmode = $i if ($mail_envs[$i] eq $env);
}
print &ui_table_row($text{'mail_env'},
&ui_radio("envmode", $envmode,
[ ( map { [ $_, $text{'mail_env'.$_}."<br>" ] } (0.. 3) ),
[ ( map { [ $_, $text{'mail_env'.$_}."<br>" ] } (
&version_atleast("2.4") ? (0) : (0 .. 3)) ),
[ 4, &text('mail_env4',
&ui_textbox("other", $envmode == 4 ? $env : undef, 40)) ] ],
), 3);
# Mail file format
if (&version_atleast("2.4")) {
$driver = &find_value("mail_driver", $conf);
print &ui_table_row($text{'mail_driver'},
&ui_radio("driver", $driver,
[ [ "", $text{'mail_driver_def'} ],
[ "auto", $text{'mail_driver_auto'} ],
[ "mbox", $text{'mail_driver_mbox'} ],
[ "maildir", $text{'mail_driver_maildir'} ],
[ "dbox", $text{'mail_driver_dbox'} ],
[ "imapc", $text{'mail_driver_imapc'} ],
[ "pop3c", $text{'mail_driver_auto'} ] ]));
}
# Index files location
$indexmode = $index eq 'MEMORY' ? 1 :
$index ? 2 : 0;
@@ -89,26 +113,10 @@ print &ui_table_row($text{'mail_change'},
[ "", &getdef($dirty, \@opts) ] ]), 3);
# Permissions on files
$umask = &find_value("umask", $conf);
print &ui_table_row($text{'mail_umask'},
&ui_opt_textbox("umask", $umask, 5, &getdef("umask")), 3);
# UIDL format
if (&find("pop3_uidl_format", $conf, 2)) {
$uidl = &find_value("pop3_uidl_format", $conf);
@opts = ( $uidl ? ( ) : ( [ "", $text{'mail_uidl_none'} ] ),
[ "%v.%u", $text{'mail_uidl_dovecot'} ],
[ "%08Xv%08Xu", $text{'mail_uidl_uw'} ],
[ "%f", $text{'mail_uidl_courier0'} ],
[ "%u", $text{'mail_uidl_courier1'} ],
[ "%v-%u", $text{'mail_uidl_courier2'} ],
[ "%Mf", $text{'mail_uidl_tpop3d'} ] );
($got) = grep { $_->[0] eq $uidl } @opts;
print &ui_table_row($text{'mail_uidl'},
&ui_select("pop3_uidl_format", $got ? $uidl : "*",
[ @opts, [ "*", $text{'mail_uidl_other'} ] ])."\n".
&ui_textbox("pop3_uidl_format_other", $got ? "" : $uidl, 10),
3);
if (&version_below("2")) {
$umask = &find_value("umask", $conf);
print &ui_table_row($text{'mail_umask'},
&ui_opt_textbox("umask", $umask, 5, &getdef("umask")), 3);
}
# Allow POP3 last command

View File

@@ -9,7 +9,11 @@ print &ui_form_start("save_ssl.cgi", "post");
print &ui_table_start($text{'ssl_header'}, "width=100%", 4);
# SSL cert and key files
if (&find_value("ssl_cert", $conf, 2) || &version_atleast("2.2")) {
if (&version_atleast("2.4")) {
$cert = &find_value('ssl_server_cert_file', $conf, 0, "");
$cert =~ s/^<//;
}
elsif (&find_value("ssl_cert", $conf, 2) || &version_atleast("2.2")) {
$cert = &find_value("ssl_cert", $conf, 0, "");
$cert =~ s/^<//;
}
@@ -20,7 +24,11 @@ print &ui_table_row($text{'ssl_cert'},
&ui_opt_textbox("cert", $cert, 40, &getdef("ssl_cert_file")), 3,
[ undef, "nowrap" ]);
if (&find_value("ssl_key", $conf, 2) || &version_atleast("2.2")) {
if (&version_atleast("2.4")) {
$key = &find_value('ssl_server_key_file', $conf, 0, "");
$key =~ s/^<//;
}
elsif (&find_value("ssl_key", $conf, 2) || &version_atleast("2.2")) {
$key = &find_value("ssl_key", $conf, 0, "");
$key =~ s/^<//;
}
@@ -31,14 +39,12 @@ print &ui_table_row($text{'ssl_key'},
&ui_opt_textbox("key", $key, 40, &getdef("ssl_key_file")), 3,
[ undef, "nowrap" ]);
# SSL key password
$pass = &find_value("ssl_key_password", $conf);
print &ui_table_row($text{'ssl_pass'},
&ui_opt_textbox("pass", $pass, 20, $text{'ssl_prompt'}), 3,
[ undef, "nowrap" ]);
# SSL CA file
if (&find_value("ssl_ca", $conf, 2) || &version_atleast("2.2")) {
if (&version_atleast("2.4")) {
$ca = &find_value('ssl_server_ca_file', $conf, 0, "");
$ca =~ s/^<//;
}
elsif (&find_value("ssl_ca", $conf, 2) || &version_atleast("2.2")) {
$ca = &find_value("ssl_ca", $conf, 0, "");
$ca =~ s/^<//;
}
@@ -50,20 +56,41 @@ print &ui_table_row($text{'ssl_ca'},
&getdef("ssl_ca_file", [ [ "", $text{'ssl_none'} ] ])), 3,
[ undef, "nowrap" ]);
# SSL key password
my $passdir = &version_atleast("2.4")
? "ssl_server_key_password"
: "ssl_key_password";
$pass = &find_value($passdir, $conf);
print &ui_table_row($text{'ssl_pass'},
&ui_opt_textbox("pass", $pass, 20, $text{'ssl_prompt'}), 3,
[ undef, "nowrap" ]);
# Parameter regen time
$regen = &find_value("ssl_parameters_regenerate", $conf);
print &ui_table_row($text{'ssl_regen'},
&ui_opt_textbox("regen", $regen, 5,
&getdef("ssl_parameters_regenerate")).
" ".$text{'ssl_hours'}, 3);
if (&version_below("2.4")) {
$regen = &find_value("ssl_parameters_regenerate", $conf);
print &ui_table_row($text{'ssl_regen'},
&ui_opt_textbox("regen", $regen, 5,
&getdef("ssl_parameters_regenerate")).
" ".$text{'ssl_hours'}, 3);
}
# Disable plaintext passwords when not SSL
@opts = ( [ 'yes', $text{'yes'} ], [ 'no', $text{'no'} ] );
$plain = &find_value("disable_plaintext_auth", $conf);
print &ui_table_row($text{'ssl_plain'},
&ui_radio("plain", $plain,
[ @opts,
[ '', &getdef("disable_plaintext_auth", \@opts) ] ]), 3);
if (&find_value("auth_allow_cleartext", $conf, 2)) {
@opts = ( [ 'yes', $text{'yes'} ], [ 'no', $text{'no'} ] );
$plain = &find_value("auth_allow_cleartext", $conf);
print &ui_table_row($text{'ssl_plain2'},
&ui_radio("plain", $plain,
[ @opts,
[ '', "$text{'default'} (No)" ] ]), 3);
}
else {
@opts = ( [ 'yes', $text{'yes'} ], [ 'no', $text{'no'} ] );
$plain = &find_value("disable_plaintext_auth", $conf);
print &ui_table_row($text{'ssl_plain'},
&ui_radio("plain", $plain,
[ @opts,
[ '', &getdef("disable_plaintext_auth", \@opts) ] ]), 3);
}
print &ui_table_end();
print &ui_form_end([ [ "save", $text{'save'} ] ]);

View File

@@ -56,6 +56,7 @@ ssl_regen=Interval between SSL parameter regeneration
ssl_hours=hours
ssl_none=None
ssl_plain=Disallow plaintext authentication in non-SSL mode?
ssl_plain2=Allow plaintext authentication in non-SSL mode?
ssl_err=Failed to save SSL configuration
ssl_ekey=Missing or non-existent private key file
ssl_ecert=Missing or non-existent certificate file
@@ -134,6 +135,14 @@ mail_env1=Inbox and folders in <tt>~/Maildir</tt>
mail_env2=Inbox under <tt>/var/mail</tt>, folders in <tt>~/mail</tt>
mail_env3=Inbox in <tt>~/Maildir</tt>, folders in <tt>~/mail</tt>
mail_env4=Other Dovecot location $1
mail_driver=Mail file format
mail_driver_def=Dovecot default
mail_driver_auto=Detect automatically
mail_driver_mbox=mbox (one file per folder)
mail_driver_maildir=Maildir (one file per message)
mail_driver_dbox=Dbox (Dovecot's custom format)
mail_driver_imapc=Remote IMAP server
mail_driver_pop3c=Remote POP3 server
mail_index=Index files location
mail_index0=Default (in Maildir directory)
mail_index1=In memory only
@@ -152,16 +161,6 @@ mail_eenv=Missing or invalid-looking mail location
mail_echeck=Missing or non-numeric number of seconds between checks
mail_eidle=Missing or non-numeric number of seconds between checks when idle
mail_eumask=Missing or invalid four-digit octal Umask
mail_uidl=UIDL format
mail_uidl_other=Other..
mail_uidl_none=Not set (WARNING - Dove may not start)
mail_uidl_dovecot=Old Dovecot, new Cyrus
mail_uidl_uw=UW ipop3d
mail_uidl_courier0=Courier version 0
mail_uidl_courier1=Courier version 1, old Cyrus
mail_uidl_courier2=Courier version 2
mail_uidl_tpop3d=tpop3d
mail_euidl=Missing or invalid UIDL format
mail_last=Allow use of POP3 LAST command?
mail_lock=Index files locking method
mail_fcntl=fcntl function

View File

@@ -10,144 +10,151 @@ $conf = &get_config();
# Allowed and default realm
&save_directive($conf, "auth_realms",
$in{'realms_def'} ? undef : $in{'realms'});
&save_directive($conf, "auth_default_realm",
&save_directive($conf,
&version_atleast("2.4")
? "auth_default_domain"
: "auth_default_realm",
$in{'realm_def'} ? undef : $in{'realm'});
# Authentication mechanisms
if (&find("auth_mechanisms", $conf, 2)) {
&save_directive($conf, "auth_mechanisms",
join(" ", split(/\0/, $in{'mechs'})));
$in{'mechs'}
? join(" ", split(/\0/, $in{'mechs'}))
: undef);
}
else {
&save_directive($conf, "mechanisms",
join(" ", split(/\0/, $in{'mechs'})), "auth","default");
}
# User database
$userdb = $in{'usermode'};
if ($in{'usermode'} eq 'passwd-file') {
-r $in{'passwdfile'} || &error($text{'login_epasswdfile'});
$userdb .= " ".$in{'passwdfile'};
}
elsif ($in{'usermode'} eq 'static') {
$in{'uid'} =~ /^\d+$/ || &error($text{'login_euid'});
$in{'gid'} =~ /^\d+$/ || &error($text{'login_egid'});
$in{'home'} || &error($text{'login_ehome'});
$userdb .= " uid=".$in{'uid'}." gid=".$in{'gid'}.
" home=".$in{'home'};
}
elsif ($in{'usermode'} eq 'ldap') {
-r $in{'ldap'} || &error($text{'login_eldap'});
$userdb .= " ".$in{'ldap'};
}
elsif ($in{'usermode'} eq 'pgsql') {
-r $in{'pgsql'} || &error($text{'login_epgsql'});
$userdb .= " ".$in{'pgsql'};
}
elsif ($in{'usermode'} eq 'sql') {
-r $in{'sql'} || &error($text{'login_esql'});
$userdb .= " ".$in{'sql'};
}
elsif ($in{'usermode'} eq '') {
$userdb = $in{'other'};
}
if ($usec = &find_section("userdb", $conf, undef, "auth", "default")) {
# Version 1.0.alpha format, which has a userdb *section*
($svalue, $args) = split(/\s+/, $userdb, 2);
$usec->{'value'} = $svalue;
$usec->{'members'} = [ grep { $_->{'name'} ne 'args' }
@{$usec->{'members'}} ];
if ($args) {
$usec->{'members'} = [ { 'name' => 'args',
'value' => $args } ];
if (&version_below("2.4")) {
# User database
$userdb = $in{'usermode'};
if ($in{'usermode'} eq 'passwd-file') {
-r $in{'passwdfile'} || &error($text{'login_epasswdfile'});
$userdb .= " ".$in{'passwdfile'};
}
elsif ($in{'usermode'} eq 'static') {
$in{'uid'} =~ /^\d+$/ || &error($text{'login_euid'});
$in{'gid'} =~ /^\d+$/ || &error($text{'login_egid'});
$in{'home'} || &error($text{'login_ehome'});
$userdb .= " uid=".$in{'uid'}." gid=".$in{'gid'}.
" home=".$in{'home'};
}
elsif ($in{'usermode'} eq 'ldap') {
-r $in{'ldap'} || &error($text{'login_eldap'});
$userdb .= " ".$in{'ldap'};
}
elsif ($in{'usermode'} eq 'pgsql') {
-r $in{'pgsql'} || &error($text{'login_epgsql'});
$userdb .= " ".$in{'pgsql'};
}
elsif ($in{'usermode'} eq 'sql') {
-r $in{'sql'} || &error($text{'login_esql'});
$userdb .= " ".$in{'sql'};
}
elsif ($in{'usermode'} eq '') {
$userdb = $in{'other'};
}
if ($usec = &find_section("userdb", $conf, undef, "auth", "default")) {
# Version 1.0.alpha format, which has a userdb *section*
($svalue, $args) = split(/\s+/, $userdb, 2);
$usec->{'value'} = $svalue;
$usec->{'members'} = [ grep { $_->{'name'} ne 'args' }
@{$usec->{'members'}} ];
if ($args) {
$usec->{'members'} = [ { 'name' => 'args',
'value' => $args } ];
}
&save_section($conf, $usec);
}
elsif (&find("auth_userdb", $conf, 2)) {
# Version 0.99 format
&save_directive($conf, "auth_userdb", $userdb);
}
elsif (&find_value("driver", $conf, 2, "userdb")) {
# Version 2.0 format
$args = $userdb =~ s/\s+(\S.*)$// ? $1 : undef;
&save_directive($conf, "driver", $userdb, "userdb");
&save_directive($conf, "args", $args, "userdb");
}
else {
# Version 1.0 format
&save_directive($conf, "userdb", $userdb, "auth", "default");
}
&save_section($conf, $usec);
}
elsif (&find("auth_userdb", $conf, 2)) {
# Version 0.99 format
&save_directive($conf, "auth_userdb", $userdb);
}
elsif (&find_value("driver", $conf, 2, "userdb")) {
# Version 2.0 format
$args = $userdb =~ s/\s+(\S.*)$// ? $1 : undef;
&save_directive($conf, "driver", $userdb, "userdb");
&save_directive($conf, "args", $args, "userdb");
}
else {
# Version 1.0 format
&save_directive($conf, "userdb", $userdb, "auth", "default");
}
# Password mode
$passdb = $in{'passmode'};
if ($in{'passmode'} eq 'dpam') {
$passdb = "pam";
}
elsif ($in{'passmode'} eq 'pam') {
$in{'ppam'} =~ /^\S+$/ || &error($text{'login_edpam'});
if (defined($in{'ppam_ckey'}) && !$in{'ppam_ckey_def'}) {
$ckey = $in{'ppam_ckey'};
$ckey =~ /^\S+$/ || &error($text{'login_eckey'});
# Password mode
$passdb = $in{'passmode'};
if ($in{'passmode'} eq 'dpam') {
$passdb = "pam";
}
$passdb .= ($in{'ppam_session'} ? " -session" : "").
($ckey ? " cache_key=$ckey" : "").
" ".$in{'ppam'};
}
elsif ($in{'passmode'} eq 'passwd-file') {
-r $in{'ppasswdfile'} || &error($text{'login_epasswdfile'});
$passdb .= " ".$in{'ppasswdfile'};
}
elsif ($in{'passmode'} eq 'ldap') {
-r $in{'pldap'} || &error($text{'login_eldap'});
$passdb .= " ".$in{'pldap'};
}
elsif ($in{'passmode'} eq 'pgsql') {
-r $in{'ppgsql'} || &error($text{'login_epgsql'});
$passdb .= " ".$in{'ppgsql'};
}
elsif ($in{'passmode'} eq 'sql') {
-r $in{'psql'} || &error($text{'login_esql'});
$passdb .= " ".$in{'psql'};
}
elsif ($in{'passmode'} eq 'bsdauth') {
$in{'bsdauth_ckey_def'} || $in{'bsdauth_ckey'} =~ /^\S+$/ ||
&error($text{'login_eckey'});
$passdb .= " cache_key=$in{'bsdauth_ckey'}"
if (!$in{'bsdauth_ckey_def'});
}
elsif ($in{'passmode'} eq 'checkpassword') {
-x $in{'checkpassword'} || &error($text{'login_echeckpassword'});
$passdb .= " ".$in{'checkpassword'};
}
elsif ($in{'passmode'} eq '') {
$passdb = $in{'other'};
}
# XXX other modes
if ($psec = &find_section("passdb", $conf, undef, "auth", "default")) {
# Version 1.0.alpha format
($svalue, $args) = split(/\s+/, $passdb, 2);
$psec->{'value'} = $svalue;
$psec->{'members'} = [ grep { $_->{'name'} ne 'args' }
@{$psec->{'members'}} ];
if ($args) {
$psec->{'members'} = [ { 'name' => 'args',
'value' => $args } ];
elsif ($in{'passmode'} eq 'pam') {
$in{'ppam'} =~ /^\S+$/ || &error($text{'login_edpam'});
if (defined($in{'ppam_ckey'}) && !$in{'ppam_ckey_def'}) {
$ckey = $in{'ppam_ckey'};
$ckey =~ /^\S+$/ || &error($text{'login_eckey'});
}
$passdb .= ($in{'ppam_session'} ? " -session" : "").
($ckey ? " cache_key=$ckey" : "").
" ".$in{'ppam'};
}
elsif ($in{'passmode'} eq 'passwd-file') {
-r $in{'ppasswdfile'} || &error($text{'login_epasswdfile'});
$passdb .= " ".$in{'ppasswdfile'};
}
elsif ($in{'passmode'} eq 'ldap') {
-r $in{'pldap'} || &error($text{'login_eldap'});
$passdb .= " ".$in{'pldap'};
}
elsif ($in{'passmode'} eq 'pgsql') {
-r $in{'ppgsql'} || &error($text{'login_epgsql'});
$passdb .= " ".$in{'ppgsql'};
}
elsif ($in{'passmode'} eq 'sql') {
-r $in{'psql'} || &error($text{'login_esql'});
$passdb .= " ".$in{'psql'};
}
elsif ($in{'passmode'} eq 'bsdauth') {
$in{'bsdauth_ckey_def'} || $in{'bsdauth_ckey'} =~ /^\S+$/ ||
&error($text{'login_eckey'});
$passdb .= " cache_key=$in{'bsdauth_ckey'}"
if (!$in{'bsdauth_ckey_def'});
}
elsif ($in{'passmode'} eq 'checkpassword') {
-x $in{'checkpassword'} || &error($text{'login_echeckpassword'});
$passdb .= " ".$in{'checkpassword'};
}
elsif ($in{'passmode'} eq '') {
$passdb = $in{'other'};
}
# XXX other modes
if ($psec = &find_section("passdb", $conf, undef, "auth", "default")) {
# Version 1.0.alpha format
($svalue, $args) = split(/\s+/, $passdb, 2);
$psec->{'value'} = $svalue;
$psec->{'members'} = [ grep { $_->{'name'} ne 'args' }
@{$psec->{'members'}} ];
if ($args) {
$psec->{'members'} = [ { 'name' => 'args',
'value' => $args } ];
}
&save_section($conf, $psec);
}
elsif (&find("auth_passdb", $conf, 2)) {
# Version 0.99 format
&save_directive($conf, "auth_passdb", $passdb);
}
elsif (&find_value("driver", $conf, 2, "passdb")) {
# Version 2.0 format
$args = $passdb =~ s/\s+(\S.*)$// ? $1 : undef;
&save_directive($conf, "driver", $passdb, "passdb");
&save_directive($conf, "args", $args, "passdb");
}
else {
# Version 1.0 format
&save_directive($conf, "passdb", $passdb, "auth", "default");
}
&save_section($conf, $psec);
}
elsif (&find("auth_passdb", $conf, 2)) {
# Version 0.99 format
&save_directive($conf, "auth_passdb", $passdb);
}
elsif (&find_value("driver", $conf, 2, "passdb")) {
# Version 2.0 format
$args = $passdb =~ s/\s+(\S.*)$// ? $1 : undef;
&save_directive($conf, "driver", $passdb, "passdb");
&save_directive($conf, "args", $args, "passdb");
}
else {
# Version 1.0 format
&save_directive($conf, "passdb", $passdb, "auth", "default");
}
# Allowed UIDs and GIDs
@@ -167,7 +174,10 @@ $in{'lgid_def'} || $in{'lgid'} =~ /^\d+$/ || &error($text{'login_elgid'});
&save_directive($conf, "last_valid_gid",
$in{'lgid_def'} ? undef : $in{'lgid'});
&save_directive($conf, "mail_extra_groups",
&save_directive($conf,
&version_atleast("2")
? "mail_access_groups"
: "mail_extra_groups",
$in{'extra_def'} ? undef : $in{'extra'});
$in{'chroot_def'} || -d $in{'chroot'} || &error($text{'login_echroot'});

View File

@@ -17,27 +17,59 @@ else {
}
# Add index file location
$env || !$in{'indexmode'} || &error($text{'mail_eindexmode'});
$env || !$in{'controlmode'} || &error($text{'mail_econtrolmode'});
if ($in{'indexmode'} == 1) {
$env .= ":INDEX=MEMORY";
if (&version_below("2.4")) {
$env || !$in{'indexmode'} || &error($text{'mail_eindexmode'});
$env || !$in{'controlmode'} || &error($text{'mail_econtrolmode'});
if ($in{'indexmode'} == 1) {
$env .= ":INDEX=MEMORY";
}
elsif ($in{'indexmode'} == 2) {
$in{'index'} =~ /^\/\S+$/ || &error($text{'mail_eindex'});
$env .= ":INDEX=".$in{'index'};
}
if ($in{'controlmode'}) {
$in{'control'} =~ /^\/\S+$/ || &error($text{'mail_econtrol'});
$env .= ":CONTROL=".$in{'control'};
}
}
elsif ($in{'indexmode'} == 2) {
$in{'index'} =~ /^\/\S+$/ || &error($text{'mail_eindex'});
$env .= ":INDEX=".$in{'index'};
}
if ($in{'controlmode'}) {
$in{'control'} =~ /^\/\S+$/ || &error($text{'mail_econtrol'});
$env .= ":CONTROL=".$in{'control'};
else {
# Parse index and control first
if ($in{'indexmode'} == 1) {
$index = "MEMORY";
}
elsif ($in{'indexmode'} == 2) {
$in{'index'} =~ /^\/\S+$/ || $in{'index'} =~ /^~\S+$/ ||
&error($text{'mail_eindex'});
$index = $in{'index'};
}
if ($in{'controlmode'}) {
$in{'control'} =~ /^\/\S+$/ || $in{'control'} =~ /^~\S+$/ ||
&error($text{'mail_econtrol'});
$control = $in{'control'};
}
# Directly save dedicated mail_index_path and mail_control_path
&save_directive($conf, "mail_index_path",
$index eq "" ? undef : $index);
&save_directive($conf, "mail_control_path",
$control eq "" ? undef : $control);
}
if (&find("default_mail_env", $conf, 2)) {
&save_directive($conf, "default_mail_env", $env eq "" ? undef : $env);
}
elsif (&find("mail_path", $conf, 2)) {
&save_directive($conf, "mail_path", $env eq "" ? undef : $env);
}
else {
&save_directive($conf, "mail_location", $env eq "" ? undef : $env);
}
# Mail file format
if (&version_atleast("2.4")) {
my $driver = $in{'driver'};
&save_directive($conf, "mail_driver", $driver eq "" ? undef : $driver);
}
# Idle intervals
$in{'idle'} != 2 || $in{'idlei'} =~ /^\d+$/ || &error($text{'mail_eidle'});
&save_directive($conf, "mailbox_idle_check_interval",
@@ -57,17 +89,12 @@ else {
$in{'change'} ? $in{'change'} : undef);
}
# Umask
$in{'umask_def'} || $in{'umask'} =~ /^[0-7]{4}$/ ||&error($text{'mail_eumask'});
&save_directive($conf, "umask",
$in{'umask_def'} ? undef : $in{'umask'});
# UIDL format
if (&find("pop3_uidl_format", $conf, 2)) {
$uidl = $in{'pop3_uidl_format'} eq '*' ?
$in{'pop3_uidl_format_other'} : $in{'pop3_uidl_format'};
$uidl =~ /^\S+$/ || &error($text{'mail_euidl'});
&save_directive($conf, "pop3_uidl_format", $uidl);
if (&version_below("2")) {
# Umask
$in{'umask_def'} || $in{'umask'} =~ /^[0-7]{4}$/ ||
&error($text{'mail_eumask'});
&save_directive($conf, "umask",
$in{'umask_def'} ? undef : $in{'umask'});
}
# LAST command

View File

@@ -7,10 +7,14 @@ require './dovecot-lib.pl';
$conf = &get_config();
&lock_dovecot_files($conf);
# Save SSL cert and key
# Save SSL cert
$in{'cert_def'} || -r $in{'cert'} || $in{'cert'} =~ /^[<>\|]/ ||
&error($text{'ssl_ecert'});
if (&find_value("ssl_cert", $conf, 2) || &version_atleast("2.2")) {
if (&version_atleast("2.4")) {
&save_directive($conf, "ssl_server_cert_file",
$in{'cert_def'} ? undef : $in{'cert'}, "");
}
elsif (&find_value("ssl_cert", $conf, 2) || &version_atleast("2.2")) {
$in{'cert'} = "<".$in{'cert'} if ($in{'cert'} =~ /^\//);
&save_directive($conf, "ssl_cert",
$in{'cert_def'} ? undef : $in{'cert'}, "");
@@ -20,9 +24,14 @@ else {
$in{'cert_def'} ? undef : $in{'cert'});
}
# Save SSL key
$in{'key_def'} || -r $in{'key'} || $in{'key'} =~ /^[<>\|]/ ||
&error($text{'ssl_ekey'});
if (&find_value("ssl_key", $conf, 2) || &version_atleast("2.2")) {
if (&version_atleast("2.4")) {
&save_directive($conf, "ssl_server_key_file",
$in{'key_def'} ? undef : $in{'key'}, "");
}
elsif (&find_value("ssl_key", $conf, 2) || &version_atleast("2.2")) {
$in{'key'} = "<".$in{'key'} if ($in{'key'} =~ /^\//);
&save_directive($conf, "ssl_key",
$in{'key_def'} ? undef : $in{'key'}, "");
@@ -35,7 +44,11 @@ else {
# Save SSL CA cert
$in{'ca_def'} || -r $in{'ca'} || $in{'ca'} =~ /^[<>\|]/ ||
&error($text{'ssl_eca'});
if (&find_value("ssl_ca", $conf, 2) || &version_atleast("2.2")) {
if (&version_atleast("2.4")) {
&save_directive($conf, "ssl_server_ca_file",
$in{'ca_def'} ? undef : $in{'ca'}, "");
}
elsif (&find_value("ssl_ca", $conf, 2) || &version_atleast("2.2")) {
$in{'ca'} = "<".$in{'ca'} if ($in{'ca'} =~ /^\//);
&save_directive($conf, "ssl_ca",
$in{'ca_def'} ? undef : $in{'ca'}, "");
@@ -47,15 +60,29 @@ else {
# Save SSL key password
$in{'pass_def'} || $in{'pass'} =~ /\S/ || &error($text{'ssl_epass'});
&save_directive($conf, "ssl_key_password",
$in{'pass_def'} ? undef : $in{'pass'});
&save_directive($conf,
&version_atleast("2.4")
? "ssl_server_key_password"
: "ssl_key_password",
$in{'pass_def'} ? undef : $in{'pass'});
$in{'regen_def'} || $in{'regen'} =~ /^\d+$/ || &error($text{'ssl_eregen'});
&save_directive($conf, "ssl_parameters_regenerate",
$in{'regen_def'} ? undef : $in{'regen'});
# Save SSL parameter regeneration time
if (&version_below("2.4")) {
$in{'regen_def'} || $in{'regen'} =~ /^\d+$/ ||
&error($text{'ssl_eregen'});
&save_directive($conf, "ssl_parameters_regenerate",
$in{'regen_def'} ? undef : $in{'regen'});
}
&save_directive($conf, "disable_plaintext_auth",
$in{'plain'} ? $in{'plain'} : undef);
# Save plaintext password setting
if (&find_value("auth_allow_cleartext", $conf, 2)) {
&save_directive($conf, "auth_allow_cleartext",
$in{'plain'} ? $in{'plain'} : undef);
}
else {
&save_directive($conf, "disable_plaintext_auth",
$in{'plain'} ? $in{'plain'} : undef);
}
&flush_file_lines();
&unlock_dovecot_files($conf);

View File

@@ -1 +1,2 @@
<header> به GID ها اعتماد نکنید </header> <i>این یک گزینه خاص NFSv2 است.</i> <br> <i><tt>ugidd</tt> شبح نقشه برداری باید در حال اجرا.</i> <br> مانند <a href="squash_uids">UID های مطمئن نیست</a> ، این گزینه به شما امکان می دهد لیستی از GID های مشتری را مشخص کنید تا به عنوان <a href="anongid">گروه غیر قابل اعتماد</a> با آنها رفتار شود. شما باید یک لیست کاملاً جدا از کاما از GID یا محدوده GID مانند <tt>Œ10،20-25،100-150 را وارد کنید</tt> . <br><br> <i>گزینه‌های exportfs: squash_gids ، map_daemon</i> <hr>
<header>به GID ها اعتماد نکنید</header> <i>این یک گزینه مخصوص NFSv2 است.</i><br> <i>دیمون نقشه برداری <tt>ugidd</tt> باید در حال اجرا باشد.</i><br> مانند گزینه‌ی <a href="squash_uids">«به UIDها اعتماد نکنید»</a> ، این گزینه به شما امکان می‌دهد فهرستی از GIDهای کلاینت را که به عنوان <a href="anongid">گروه غیرقابل اعتماد</a> در نظر گرفته می‌شوند، مشخص کنید. شما باید فهرستی از GIDها یا محدوده‌های GID مانند <tt>۱،۱۰،۲۰-۲۵،۱۰۰-۱۵۰</tt> را که با کاما از هم جدا شده‌اند، وارد کنید.<br><br> <i>گزینه‌های exportfs: squash_gids، map_daemon</i><hr>

View File

@@ -132,7 +132,7 @@ acl_root=ریشه (با احتیاط به کاربران غیر قابل اعت
acl_same=مشابه ورود به وب
acl_user=کاربر خاص یونیکس
acl_user_strict=بررسی های دقیق مالکیت کاربر را فعال کنید
acl_user_strict_desc=در صورت فعال بودن، کاربر فقط می‌تواند فایل‌های متعلق به خود را حذف و منتقل کند. این با رفتار استاندارد یونیکس متفاوت است، جایی که کاربر می تواند هر فایلی را در فهرستی که دسترسی نوشتن به آن دارد حذف یا منتقل کند
acl_user_strict_desc=در صورت فعال بودن، کاربر فقط می‌تواند فایل‌های متعلق به خود را حذف و منتقل کند. این با رفتار استاندارد یونیکس متفاوت است، که در آن کاربر می‌تواند هر فایلی را در دایرکتوری که دسترسی نوشتن در آن را دارد، حذف یا منتقل کند
acl_euser=کاربر انتخاب شده یونیکس وجود ندارد!
acl_epath=مسیر$1 وجود ندارد
acl_max=حداکثر اندازه برای پرونده های بارگذاری شده

View File

@@ -155,7 +155,7 @@ desc_args--match-set=$2 در مجموعه IP $1 موجود است
desc_src=منبع
desc_dest=مقصد
redhat_einstalled2=هیچ اقدام راه‌اندازی <tt>$1</tt> یافت نشد که نشان می‌دهد بسته IPtables روی سیستم شما نصب نشده است
redhat_einstalled2=هیچ اقدام بوت <tt>$1</tt> یافت نشد، که نشان می‌دهد بسته IPtables روی سیستم شما نصب نشده است
redhat_eoutput=خطایی در دریافت وضعیت IPtables از دستور$1 رخ داد. احتمالاً این نشان می دهد كه سیستم شما پیكربندی شده است تا از IPchains به جای IPtables استفاده كند.
gentoo_escript=اسکریپت راه اندازی Gentoo IPtables $1 در سیستم شما یافت نشد.

View File

@@ -1,4 +1,5 @@
firewall_cmd=firewall-cmd
init_name=firewalld
config_dir=/etc/firewalld
packet_handling=drop
packet_handling=0
timeout=0

View File

@@ -2,3 +2,4 @@ firewall_cmd=Full path to firewall-cmd program,0
init_name=FirewallD init script name,0
config_dir=FirewallD configuration directory,0
packet_handling=Default packet handling action,1,0-<tt>drop</tt>,1-<tt>reject</tt>
timeout=Timeout for temporary rules,15,timeout_data

48
firewalld/config_info.pl Executable file
View File

@@ -0,0 +1,48 @@
require './firewalld-lib.pl';
# show_timeout_data(value, config-option-name)
# Returns a radio button and a select box for timeout values
sub show_timeout_data
{
my ($value, $name) = @_;
$name = &format_option_name($name);
my $radio = &ui_radio(
"${name}_def", !$value ? 1 : 0,
[ [ 1, $text{'config_timeout_none'} ],
[ 0, ' ' ] ] );
my @list = &get_timeouts();
my @opts = map { [ $_, $text{"config_timeout_$_"} ] } @list;
my $select = &ui_select($name, !$value ? $list[3] : $value, \@opts);
return $radio . '&nbsp;' . $select;
}
# parse_timeout_data(old-value, config-option-name)
# Parses the timeout value from the form input
sub parse_timeout_data
{
my ($oldval, $name) = @_;
$name = &format_option_name($name);
my $val = $in{$name} // '';
return 0 if ($in{"${name}_def"});
my %valid = map { $_ => 1 } &get_timeouts();
&error(&text('config_timeout_err', $val)) unless($valid{$val});
return $val;
}
# get_timeouts
# Returns a list of valid timeout values for the select box
sub get_timeouts
{
return qw(1m 5m 15m 30m 1h 3h 6h 12h 1d 3d 7d 30d);
}
# format_option_name(name)
# Formats the option name for use in HTML element names
sub format_option_name
{
my ($name) = @_;
$name =~ s/\s+/_/g;
$name =~ s/[^\x00-\x7F]/_/g;
$name = lc($name);
return $name;
}

View File

@@ -540,6 +540,14 @@ if (!$zone) {
$zone = $zone->{'name'};
}
# Timeout
my $timeout = $opts->{'timeout'};
if ($timeout) {
# Validate timeout format
&error(&text('config_timeout_err', $timeout))
if ($timeout !~ /^(\d+)([smhd]?)$/);
}
# Permanent rule
my $permanent = $opts->{'permanent'};
@@ -548,7 +556,8 @@ my $get_cmd = sub {
my ($rtype) = @_;
my $type = $rtype ? " --permanent" : "";
return "$config{'firewall_cmd'} --zone=\"".quotemeta($zone)."\"".
"$type --".quotemeta($action)."-rich-rule='$opts->{'rule'}'";
"$type --".quotemeta($action)."-rich-rule='$opts->{'rule'}'".
($timeout ? " --timeout=".quotemeta($timeout) : "");
};
for my $type (0..1) {

View File

@@ -50,6 +50,21 @@ index_dependent=Failed to restart $1 dependent service
index_manual=Edit Config Files.
index_downrules=FirewallD rules cannot be created or edited and are not enforced unless the server is running.
config_timeout_none=None
config_timeout_1m=1 minute
config_timeout_5m=5 minutes
config_timeout_15m=15 minutes
config_timeout_30m=30 minutes
config_timeout_1h=1 hour
config_timeout_3h=3 hours
config_timeout_6h=6 hours
config_timeout_12h=12 hours
config_timeout_1d=1 day
config_timeout_3d=3 days
config_timeout_7d=7 days
config_timeout_30d=30 days
config_timeout_err=Invalid timeout value <tt>$1</tt>
manual_title=Edit Config Files
manual_editsel=Edit FirewallD configuration file
manual_err=Failed to save config file

View File

@@ -6,7 +6,7 @@ use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
require './firewalld-lib.pl';
our (%in, %text);
our (%in, %text, %config);
&ReadParse();
# Setup error messages
@@ -31,6 +31,7 @@ $ip =~ s/\Q$mask\E// if ($mask);
# Block the IP
my $perm = $in{'permanent'} ? 'perm' : '';
my $timeout = $config{'timeout'} unless ($perm && $config{'timeout'});
my ($out, $rs) = &rich_rule('add',
{ 'rule' =>
&construct_rich_rule(
@@ -38,7 +39,8 @@ my ($out, $rs) = &rich_rule('add',
'action' => $allow ? 'accept' : undef,
'priority' => $allow ? -32767 : -32766,
),
'zone' => $zone->{'name'}, 'permanent' => $perm });
'zone' => $zone->{'name'}, 'permanent' => $perm,
'timeout' => $timeout });
&error($out) if ($rs);
&apply_firewalld() if ($perm);

View File

@@ -26,9 +26,29 @@ time() - $link{'time'} > 60*$timeout &&
# Get the Webmin user
&foreign_require("acl");
my ($wuser) = grep { $_->{'name'} eq $link{'user'} } &acl::list_users();
$wuser || &error(&text('forgot_euser2',
# Get the Virtualmin mail Unix user if Webmin user is not found
my ($muser, $muserdom);
if (!$wuser && $link{'muser'}) {
# Probably Virtualmin mail user, so try to find it
&foreign_require("virtual-server");
my $d = &virtual_server::get_user_domain(lc($link{'muser'}));
if ($d) {
my @u = &virtual_server::list_domain_users($d, 0, 0, 1, 1, 0);
($muser) = grep { $_->{'user'} eq lc($link{'muser'}) } @u;
}
}
# Show an error if neither user was found
!$muser && $link{'muser'} && &error(&text('forgot_euser3',
"<tt>".&html_escape($link{'muser'})."</tt>"));
$wuser || $muser || &error(&text('forgot_euser2',
"<tt>".&html_escape($link{'user'})."</tt>"));
my $username = $link{'uuser'} || $link{'user'};
# Set the username whichever is available
my $username = $link{'muser'} || $link{'uuser'} || $link{'user'};
my $email = $wuser ? $wuser->{'email'} :
$muser ? $muser->{'recovery'} || $muser->{'email'} : undef;
&ui_print_header(undef, $text{'forgot_title'}, "", undef, undef, 1, 1);
@@ -86,6 +106,17 @@ if (defined($in{'newpass'})) {
&virtual_server::pop_all_print();
print $text{'forgot_done'},"<p>\n";
}
elsif ($muser) {
# Update in Virtualmin if this is a mail user
my %oldmuser = %$muser;
$muser->{'plainpass'} = $in{'newpass'};
$muser->{'pass'} =
&virtual_server::encrypt_user_password(
$muser, $muser->{'plainpass'});
$muser->{'passmode'} = 3;
&virtual_server::set_pass_change($muser);
&virtual_server::modify_user($muser, \%oldmuser, $muserdom);
}
elsif ($link{'uuser'} || $wuser->{'pass'} eq 'x') {
# Update in Users and Groups
print &text('forgot_udoing',
@@ -116,12 +147,20 @@ if (defined($in{'newpass'})) {
&reload_miniserv();
print $text{'forgot_done'},"<p>\n";
}
print &text('forgot_retry', '/'),"<p>\n";
# Print link to login for Webmin user
if (!$muser) {
print &text('forgot_retry', &get_webprefix()."/",
"<tt>".$username."</tt>"),"<p>\n";
}
else {
print &text('forgot_retry2', "<tt>".$username."</tt>"),"<p>\n";
}
&webmin_log("forgot", "reset", undef,
{ 'user' => $username,
'unix' => $link{'uuser'} ? 1 : 0,
'email' => $wuser->{'email'} }, "acl");
'email' => $email }, "acl");
&unlink_logged($linkfile);
}

View File

@@ -4,6 +4,7 @@
BEGIN { push(@INC, "."); };
use WebminCore;
$no_acl_check++;
$trust_unknown_referers = 1;
&init_config();
&ReadParse();
&load_theme_library();

View File

@@ -27,7 +27,21 @@ if (!$wuser) {
($wuser) = grep { $_->{'name'} eq 'root' } &acl::list_users();
}
}
my $email = $wuser ? $wuser->{'email'} : undef;
# If no Webmin user, then try to get mail user from Virtualmin
my $muser;
if (!$wuser && &foreign_check("virtual-server")) {
# Probably in Virtualmin, so try to find the user
&foreign_require("virtual-server");
my $d = &virtual_server::get_user_domain(lc($in{'forgot'}));
if ($d) {
my @u = &virtual_server::list_domain_users($d, 0, 0, 1, 1, 0);
($muser) = grep { $_->{'user'} eq lc($in{'forgot'}) } @u;
}
}
my $email = $wuser ? $wuser->{'email'} :
$muser ? $muser->{'recovery'} || $muser->{'email'} : undef;
# Check if the IP or Webmin user is over it's rate limit
&make_dir($main::forgot_password_link_dir, 0700);
@@ -43,6 +57,7 @@ my $ptime = $gconfig{'passreset_time'} // 60;
foreach my $key ($ENV{'REMOTE_ADDR'},
$wuser ? ( $wuser->{'name'} ) : ( ),
$uuser ? ( $uuser->{'user'} ) : ( ),
$muser ? ( $muser->{'user'} ) : ( ),
$email ? ( $email ) : ( )) {
# Don't block if disabled
next if (!$pfailures || !$ptime);
@@ -83,7 +98,7 @@ sleep($maxtries);
&error($rlerr) if ($rlerr);
# Make sure the Webmin user exists and is eligible for a reset
$wuser && $wuser->{'email'} || &error($text{'forgot_euser'});
(($wuser && $email) || ($muser && $email)) || &error($text{'forgot_euser'});
($wuser->{'sync'} || $wuser->{'pass'} eq 'e') && &error($text{'forgot_esync'});
$wuser->{'pass'} eq '*LK*' && &error($text{'forgot_elock'});
@@ -92,7 +107,8 @@ my %link = ( 'id' => &acl::generate_random_id(),
'remote' => $ENV{'REMOTE_ADDR'},
'time' => $now,
'user' => $wuser->{'name'},
'uuser' => $uuser ? $uuser->{'user'} : undef, );
'uuser' => $uuser ? $uuser->{'user'} : undef,
'muser' => $muser ? $muser->{'user'} : undef, );
$link{'id'} || &error($text{'forgot_erandom'});
my $linkfile = $main::forgot_password_link_dir."/".$link{'id'};
&lock_file($linkfile);
@@ -100,8 +116,9 @@ my $linkfile = $main::forgot_password_link_dir."/".$link{'id'};
&unlock_file($linkfile);
my $baseurl = &get_webmin_email_url();
my $url = $baseurl.'/forgot.cgi?id='.&urlize($link{'id'});
my $username = $uuser ? $uuser->{'user'} : $wuser->{'name'};
$url = &theme_forgot_url($baseurl, $link{'id'}, $link{'user'})
my $username = $muser ? $muser->{'user'} :
$uuser ? $uuser->{'user'} : $wuser->{'name'};
$url = &theme_forgot_url($baseurl, $link{'id'}, $username)
if (defined(&theme_forgot_url));
&ui_print_header(undef, $text{'forgot_title'}, "", undef, undef, 1, 1);
@@ -128,6 +145,6 @@ print "</center>\n";
&webmin_log("forgot", "send", undef,
{ 'user' => $username,
'unix' => $uuser ? 1 : 0,
'unix' => $muser || $uuser ? 1 : 0,
'email' => $email }, "acl");
&ui_print_footer();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -15,6 +15,9 @@ table.formsection, table.ui_table, table.loginform {
table.ui_table .ui_table {
border: none;
}
table.shrinkwrapper > tbody > tr > td > .ui_table {
table-layout: fixed;
}
img, a img { border:0; }
tr.row0 {background-color:#e8e8ea;}
tr.row1 {background-color:#f8f8fa;}
@@ -140,11 +143,16 @@ div.wrapper {
background-color:#D9D9D9;
}
.goArrow { margin-bottom: -4px; }
.ui_checked_columns .ui_checked_checkbox {
min-width: 20px;
}
.ui_form_label{
text-align:right;
vertical-align:top;
}
.ui_form_pair .ui_form_value {
padding-left: 8px;
}
.ui_form_pair td {padding:4px;}
.ui_form_pair td table.ui_radio_table tr td {padding:2px;}
.ui_form_pair td table tr td {padding:0px;}
@@ -220,8 +228,16 @@ br[data-x-br] {
opacity: .8;
}
.ui_text_wrap {
float: right;
tr:has(.ui_help) td:not(:hover) .ui_help {
visibility: hidden;
}
tr:has(.ui_help) td.ui_form_label .ui_help {
visibility: visible;
}
td:not(:hover) .ui_link_help {
visibility: hidden;
}
.ui_link_help {
@@ -230,12 +246,13 @@ br[data-x-br] {
margin-right: 4px;
}
td:not(:hover) .ui_link_help {
visibility: hidden;
.ui_text_wrap {
float: right;
}
[data-tooltip][aria-label] {
position: relative;
vertical-align: top;
}
[data-tooltip][aria-label]::after {
@@ -422,6 +439,10 @@ details.ui_hidden_table_start > summary::-webkit-details-marker {
color: #a1acc0;
}
details:not([open]).on-hover:not(:hover) summary::after {
visibility: hidden !important;
}
details.inline {
cursor: pointer;
padding: 0;
@@ -438,6 +459,23 @@ details.inline > summary + span {
line-height: 1.33;
}
details.inline.inlined > summary,
details.inline.inlined {
display: inline !important;
}
details > span .ui_alert_box {
margin-top: 5px;
}
details > span .ui_alert_box:not(:has(+p)) {
margin-bottom: 5px;
}
details.inline.inlined > span {
margin-top: 10px;
}
details.inline > summary + span > tt {
font-size: 96%;
}
@@ -461,6 +499,12 @@ details[open].inline > summary:after {
content: '⏷';
}
details.inline.fit > summary + span span,
details.inline.fit > summary + span {
width: fit-content;
display: inline-block;
}
[data-second-print]:has(details) + br:has(+[data-x-br]) {
display: none;
}
@@ -818,3 +862,32 @@ body > .mode > b[data-mode="server-manager"] > a > .ff-cloudmin {
[data-pro-disabled$="-elem"] a:hover {
filter: grayscale(1) contrast(1);
}
.not-secure {
color: #c40000;
float: right;
}
.inherit-color::after,
.inherit-color::before,
.inherit-color:focus::after,
.inherit-color:focus::before,
.inherit-color:active::after,
.inherit-color:active::before,
.inherit-color:hover::after,
.inherit-color:hover::before,
.inherit-color:focus,
.inherit-color:active,
.inherit-color:hover,
.inherit-color {
color: inherit !important;
}
.table-simple {
width: auto !important;
max-width: 100%;
}
.table-simple tr td {
padding: 0 4px !important;
}
.field-sizing-content {
field-sizing: content !important;
min-width: 40px !important;
}

View File

@@ -8,7 +8,7 @@ index_header=جستجوی راهنمای جهانی وبمین
index_return=فرم جستجو
search_err=جستجو ناموفق بود
search_eterms=عبارت‌های جستجو وجود ندارد
search_eterms=عبارات جستجوی گم‌شده
search_emods=هیچ ماژولی انتخاب نشده است
search_title=نتایج جستجو
search_einclude=شامل $1 نشد

View File

@@ -120,5 +120,5 @@ search_doing=جستجوی فهرستهای محافظت شده تحت $1 ..
search_found=پرونده گزینه های جدید Apache $1 با کاربران در$2 یافت شد.
search_already=جستجوی پرونده معروف گزینه های Apache$1.
search_noprot=جستجوی پرونده گزینه های Apache $1 ، زیرا از دایرکتوری محافظت نمی کند.
search_open=پرونده گزینه‌های Apache $1 : $2 باز نشد
search_open=نتوانست فایل گزینه‌های آپاچی $1 : $2 را باز کند
search_done=.. انجام شده

View File

@@ -7,7 +7,7 @@ index_add=یک کاربر جدید به فایل رمز اضافه کنید.
index_file=کاربران در فایل رمز عبور $1
index_sync=همگام سازی کاربر یونیکس
index_return=فهرست کاربران
index_eversion=این ماژول برای استفاده از رمزگذاری MD5 برای رمزهای عبور <a href='$1'>پیکربندی شده است، اما نسخه ماژول کاربران و گروه‌ها که روی سیستم شما نصب شده است، شامل توابع MD5 مورد نیاز نیست. به نسخه 1.114 یا بالاتر ارتقا دهید.
index_eversion=این ماژول <a href='$1'>به گونه‌ای پیکربندی شده است که از رمزگذاری MD5 برای رمزهای عبور استفاده کند، اما نسخه ماژول Users and Groups که روی سیستم شما نصب شده است، شامل توابع MD5 مورد نیاز نیست. آن را به نسخه ۱.۱۱۴ یا بالاتر ارتقا دهید.
index_synccreate=هنگامی که کاربر یونیکس ایجاد می شود، کاربر اضافه شود؟
index_syncmodify=هنگامی که کاربر یونیکس مربوطه تغییر می کند، نام کاربری را تغییر دهید یا رمز عبور را تغییر دهید؟
index_syncdelete=وقتی کاربر یونیکس مربوطه حذف شد، یک کاربر حذف شود؟

View File

@@ -335,11 +335,13 @@ elsif ($init_mode eq "systemd" && $access{'bootup'}) {
&select_invert_link("d"),
&ui_link("edit_systemd.cgi?new=1", $text{'index_sadd'}) );
print &ui_links_row(\@links);
print &ui_columns_start([ "", $text{'index_uname'},
$text{'index_udesc'},
$text{'index_ucstatus'},
$text{'index_uboot'},
$text{'index_ustatus'}, ]);
print &ui_columns_start([ "", $text{'systemd_name'},
$config{'desc'} ? $text{'systemd_desc'} : (),
$text{'systemd_type'},
$text{'systemd_status'},
$text{'systemd_boot'},
$text{'index_ustatus'} ]);
my $units_piped = join('|', map { quotemeta } &get_systemd_unit_types());
foreach $u (&list_systemd_services()) {
if ($u->{'legacy'}) {
$l = "edit_action.cgi?0+".&urlize($u->{'name'});
@@ -347,12 +349,23 @@ elsif ($init_mode eq "systemd" && $access{'bootup'}) {
else {
$l = "edit_systemd.cgi?name=".&urlize($u->{'name'});
}
my $sname = $u->{'name'};
my ($type) = $sname =~ /\.([^.]+)$/;
if (defined($type) && $type =~ /^(?:$units_piped)$/) {
$sname =~ s/\.$type$//;
}
else {
$type = '';
}
my $title = ($u->{'boot'} == -1 ?
&html_escape($sname) :
&ui_link($l, &html_escape($sname)));
my $desc = $config{'desc'} ? &html_escape($u->{'desc'}) : undef;
print &ui_columns_row([
&ui_checkbox("d", $u->{'name'}, undef),
$u->{'boot'} == -1 ?
&html_escape($u->{'name'}) :
&ui_link($l, &html_escape($u->{'name'})),
&html_escape($u->{'desc'}),
$title,
$desc // (),
$type,
$u->{'fullstatus'} || "<i>$text{'index_unknown'}</i>",
$u->{'boot'} == 1 ?
&ui_text_color("$text{'yes'}", 'success') :

View File

@@ -207,7 +207,7 @@ unless full unit name is passed
sub action_unit
{
my ($unit) = @_;
my $units_piped = &get_systemd_unit_types('|');
my $units_piped = join('|', &get_systemd_unit_types());
$unit .= ".service"
if ($unit !~ /\.($units_piped)$/);
return $unit;
@@ -2128,7 +2128,7 @@ if (@list_systemd_services_cache && !$noinit) {
return @list_systemd_services_cache;
}
my $units_piped = &get_systemd_unit_types('|');
my $units_piped = join('|', &get_systemd_unit_types());
# Get all systemd unit names
my $out = &backquote_command("systemctl list-units --full --all -t service --no-legend");
@@ -2181,7 +2181,7 @@ while(@units) {
while(@args < 100 && @units) {
push(@args, shift(@units));
}
my $out = &backquote_command("systemctl show --property=Id,Description,UnitFileState,ActiveState,SubState,ExecStart,ExecStop,ExecReload,ExecMainPID,FragmentPath ".join(" ", @args)." 2>/dev/null");
my $out = &backquote_command("systemctl show --property=Id,Description,UnitFileState,ActiveState,SubState,ExecStart,ExecStop,ExecReload,ExecMainPID,FragmentPath,DropInPaths ".join(" ", @args)." 2>/dev/null");
my @lines = split(/\r?\n/, $out);
my $curr;
my @units;
@@ -2415,7 +2415,7 @@ my ($name) = @_;
&restart_systemd();
}
=head2 get_systemd_unit_types([return-as-string-separated])
=head2 get_systemd_unit_types()
Returns a list of all systemd unit types. Returns a string
instead if separator param is set.
@@ -2423,14 +2423,8 @@ instead if separator param is set.
=cut
sub get_systemd_unit_types
{
my ($str_separator) = @_;
my @systemd_types = ('target', 'service', 'socket', 'device',
'mount', 'automount', 'swap', 'path',
'timer', 'snapshot', 'slice', 'scope',
'busname');
return $str_separator ?
join($str_separator, @systemd_types) :
@systemd_types;
return ('target', 'service', 'socket', 'device', 'mount', 'automount',
'swap', 'path', 'timer', 'snapshot', 'slice', 'scope', 'busname');
}
=head2 is_systemd_service(name)
@@ -2441,7 +2435,7 @@ Returns 1 if some service is managed by systemd
sub is_systemd_service
{
my ($name) = @_;
my $units_piped = &get_systemd_unit_types('|');
my $units_piped = join('|', &get_systemd_unit_types());
foreach my $s (&list_systemd_services(1)) {
if (($s->{'name'} eq $name ||
$s->{'name'} =~
@@ -2467,22 +2461,10 @@ my $systemd_unit_dir2 = "/lib/systemd/system";
if ($name) {
foreach my $p ($systemd_local_conf, $systemd_unit_dir1,
$systemd_unit_dir2) {
if (-r "$p/$name.service" ||
-r "$p/$name" ||
-r "$p/$name.target" ||
-r "$p/$name.socket" ||
-r "$p/$name.device" ||
-r "$p/$name.mount" ||
-r "$p/$name.automount" ||
-r "$p/$name.swap" ||
-r "$p/$name.path" ||
-r "$p/$name.timer" ||
-r "$p/$name.snapshot" ||
-r "$p/$name.slice" ||
-r "$p/$name.scope" ||
-r "$p/$name.busname") {
return $p;
foreach my $t (&get_systemd_unit_types()) {
return $p if (-r "$p/$name.$t");
}
return $p if (-r "$p/$name");
}
}
# Always use /etc/systemd/system for locally created units
@@ -2919,4 +2901,12 @@ my ($name) = @_;
return $name =~ /\./ ? $name : "com.webmin.".$name;
}
# config_pre_load(mod-info, [mod-order])
# Check if some config options are conditional
sub config_pre_load
{
my ($modconf_info, $modconf_order) = @_;
$modconf_info->{'desc'} =~ s/2-[^,]+,// if ($init_mode eq "systemd");
}
1;

View File

@@ -221,29 +221,30 @@ upstart_eserver2=Server command does not exist
upstart_eserver3=Only one server command can be entered
upstart_return=upstart service
systemd_title1=Create Systemd Service
systemd_title2=Edit Systemd Service
systemd_egone=Service no longer exists!
systemd_elegacy=Not a systemd service!
systemd_header=Systemd service details
systemd_name=Service name
systemd_title1=Create Systemd Unit
systemd_title2=Edit Systemd Unit
systemd_egone=Unit no longer exists!
systemd_elegacy=Not a systemd unit!
systemd_header=Systemd unit details
systemd_name=Unit name
systemd_type=Unit type
systemd_file=Configuration file
systemd_desc=Service description
systemd_desc=Unit description
systemd_start=Commands to run on startup
systemd_stop=Commands to run on shutdown
systemd_conf=Systemd configuration
systemd_conf=Systemd unit configuration
systemd_boot=Start at boot time?
systemd_status=Current status
systemd_status0=Not running
systemd_status1=Running with PID $1
systemd_status2=Running
systemd_status3=Unknown!
systemd_err=Failed to save systemd service
systemd_ename=Missing or invalid-lookup systemd service name
systemd_eclash=A service with the same name already exists
systemd_edesc=Missing service description
systemd_return=systemd service
systemd_econf=No systemd configuration entered
systemd_err=Failed to save systemd unit
systemd_ename=Missing or invalid-lookup systemd unit name
systemd_eclash=A unit with the same name already exists
systemd_edesc=Missing unit description
systemd_return=systemd unit
systemd_econf=No systemd unit configuration entered
systemd_estart=Missing commands to run on startup
launchd_title1=Create Launchd Agent

View File

@@ -1 +1 @@
<header> iSCSI Target </header> این ماژول به شما امکان می دهد تا با استفاده از پروتکل iSCSI دستگاه های دیسک را به سیستم های دیگر از طریق شبکه صادر کنید. هر دیسک صادر شده یک <i>هدف</i> نامیده می شود و اهداف موجود در صفحه اصلی ماژول فهرست می شوند. برای ایجاد یک هدف جدید ، روی دکمه <b>افزودن هدف iSCSI جدید</b> کلیک کنید ، یک نام وارد کنید و دستگاه یا پرونده دیسک مورد نظر را برای صادر کردن انتخاب کنید. <p style=";text-align:right;direction:rtl"> ورود و گذرواژه‌های مورد نیاز مشتری یا می توانند بر اساس هدف و یا برای همه اهداف در صفحه <b>تنظیمات تأیید اعتبار تنظیم شوند</b> . پروتکل iSCSI همچنین به اهداف اجازه می دهد تا خود را به مشتری (که به عنوان آغازگر نیز شناخته می شود) تأیید کنند. <p style=";text-align:right;direction:rtl"> تنظیمات جهانی مربوط به اندازه بسته ها و پروتکل iSCSI را می توان در صفحه <b>تنظیمات اتصال</b> تغییر داد. برنامه های زمانی ارتباط با مشتری را می توان در صفحه <b>تنظیمات زمانبندی</b> تغییر داد. <p style=";text-align:right;direction:rtl"> به طور پیش فرض ، هر مشتری با ورود معتبر می تواند به اهداف صادر شده شما متصل شود. با این حال ، شما می توانید محدودیت هایی را که مشتری های IP می توانند از طریق صفحه <b>مجاز آدرس های مشتری</b> متصل شوند ، متصل کنید. از طرف دیگر ، می توانید IP ها را روی سرور محدود کنید که مشتری ها می توانند با استفاده از صفحه <b>آدرس مجاز سرور مجاز</b> به اتصال به آن باشند. <p style=";text-align:right;direction:rtl"> در پایین صفحه اصلی ماژول دکمه هایی برای متوقف کردن ، شروع و راه اندازی مجدد سرور iSCSI وجود دارد. تا تنظیم مجدد سرور تغییرات پیکربندی اعمال نمی شود. <p style=";text-align:right;direction:rtl"><footer>
<header>هدف iSCSI</header> این ماژول به شما امکان می‌دهد دستگاه‌های دیسک را با استفاده از پروتکل iSCSI از طریق شبکه به سیستم‌های دیگر صادر کنید. هر دیسک صادر شده یک <i>هدف</i> نامیده می‌شود و اهداف موجود در صفحه اصلی ماژول فهرست شده‌اند. برای ایجاد یک هدف جدید، روی دکمه <b>«افزودن یک هدف iSCSI جدید»</b> کلیک کنید، یک نام وارد کنید و دستگاه یا فایل دیسک را برای صادر کردن انتخاب کنید.<p style=";text-align:right;direction:rtl"> نام‌های کاربری و رمزهای عبور مورد نیاز از کلاینت‌ها را می‌توان یا برای هر هدف یا برای همه اهداف در صفحه <b>تنظیمات احراز هویت</b> تنظیم کرد. پروتکل iSCSI همچنین به کلاینت‌ها اجازه می‌دهد تا خود را برای کلاینت‌ها (که به عنوان آغازگر نیز شناخته می‌شوند) احراز هویت کنند.<p style=";text-align:right;direction:rtl"> تنظیمات سراسری مربوط به اندازه بسته‌ها و پروتکل iSCSI را می‌توان در صفحه <b>تنظیمات اتصال</b> تغییر داد. زمان‌های وقفه برای ارتباط با کلاینت‌ها را می‌توان در صفحه <b>تنظیمات زمان وقفه</b> تغییر داد.<p style=";text-align:right;direction:rtl"> به طور پیش‌فرض، هر کلاینتی که دارای ورود معتبر باشد می‌تواند به اهداف صادر شده شما متصل شود. با این حال، می‌توانید با استفاده از صفحه <b>«آدرس‌های کلاینت مجاز»</b> IPهایی را که کلاینت‌ها می‌توانند به آنها متصل شوند محدود کنید. همچنین، می‌توانید با استفاده از صفحه <b>«آدرس‌های سرور مجاز»،</b> IPهای روی سروری را که کلاینت‌ها می‌توانند به آنها متصل شوند محدود کنید.<p style=";text-align:right;direction:rtl"> در پایین صفحه اصلی ماژول، دکمه‌هایی برای توقف، شروع و راه‌اندازی مجدد سرور iSCSI وجود دارد. تغییرات پیکربندی تا زمانی که سرور راه‌اندازی مجدد نشود، اعمال نخواهند شد.<p style=";text-align:right;direction:rtl"><footer>

56
lang/en
View File

@@ -147,31 +147,33 @@ session_save=Remember login permanently?
session_forgot=Forgot Password?
forgot_title=Reset Forgotten Password
forgot_user=Webmin username:
forgot_desc=If your Webmin login has a recovery email address associated with it, you can use this page to send a link that can be used to reset the password.
forgot_user=Username:
forgot_desc=If your account has a recovery email set, you can use this form to send yourself a password reset link.
forgot_go=Send Password Reset Link
forgot_ecannot=Forgotten password recovery is not enabled!
forgot_euser=The username either does not exist or does not have a recovery email configured.
forgot_msg=You are receiving this email due to a request for password recovery from the Webmin system at $4 from $3, for the login $1.\n\nIf you would like to proceed with resetting the password, follow this link :\n$2
forgot_subject=Webmin password reset for $1
forgot_sent=A link to reset your Webmin password for login $2 has been sent to the recovery email address $1.
forgot_euser=The user either does not exist or does not have a recovery email configured.
forgot_msg=You are receiving this email due to a request for password recovery from the Webmin system at $4 from $3, for the username $1.\n\nIf you would like to proceed with resetting the password, follow this link:\n$2
forgot_subject=Password reset for user $1
forgot_sent=A link to reset your password for user $2 has been sent to the recovery email address $1.
forgot_erandom=Failed to generate random ID!
forgot_eid=Missing or invalid-looking reset ID!
forgot_eid2=Reset ID is not valid!
forgot_etime=Password reset email is more than $1 minutes old.
forgot_newpass=New password for Webmin user $1
forgot_newpass=New password for user $1
forgot_newpass2=New password again
forgot_passok=Change Password
forgot_euser2=Webmin user $1 does not exist!
forgot_euser3=Mailbox user $1 does not exist!
forgot_esync=The password cannot be changed for this user
forgot_elock=The password for this user is locked
forgot_err=Failed to reset password
forgot_enewpass=No new password entered!
forgot_enewpass2=New passwords do not match!
forgot_equality=Password requirements were not met : $1
forgot_wdoing=Changing password for Webmin user $1 ..
forgot_wdoing=Changing password for user $1 ..
forgot_done=.. password change complete.
forgot_retry=You can now <a href='$1'>login to Webmin</a> using your new password.
forgot_retry=The password for Webmin user $2 was reset successfully. You can now <a href='$1'>log in</a> using your new password.
forgot_retry2=The password for mailbox user $1 was reset successfully.
forgot_edisabled=The password for a disabled Virtualmin domain cannot be reset
forgot_vdoing=Changing password for Virtualmin domain $1 ..
forgot_udoing=Changing password for Unix user $1 ..
@@ -179,6 +181,7 @@ forgot_eunix=Unix user does not exist!
forgot_eunixlock=User user's password is locked!
forgot_elogin=Forgotten password pages cannot be used when you are already logged in to Webmin!
forgot_erate=Too many password reset attempts for $1! Please try again later.
forgot_eremote=Webmin server on this system is not running or is not configured to allow forgotten password recovery.
pam_header=Login to Webmin
pam_mesg=You must respond to the question below to login to Webmin server on $1.
@@ -186,6 +189,9 @@ pam_mesg2=You must respond to the question below to login.
pam_login=Continue
pam_restart=Restart
login_notsecure=Not Secure
login_notsecure_desc=This connection is not secure and could let a man-in-the-middle attack intercept your password or session cookie. Click here to switch to an HTTPS connection, unless you are on a trusted local network or behind a secure reverse proxy.
acl_root=Root directory for file chooser
acl_otherdirs=Other visible directories in file chooser
acl_nodot=Hide dot files in file chooser?
@@ -407,7 +413,6 @@ log_email_time=Action performed at: $1
log_email_system=Performed on system: $1
log_email_user=Performed by user: $1
log_email_script=Webmin script: $1
log_email_session=Session ID: $1
log_email_remote=Client address: $1
nice_size_PB=PB
@@ -433,6 +438,37 @@ file_truncated_message=fetched $1 of data, truncated $2 out of $3
file_truncated_message_head=fetched beginning $1 of data, truncated $2 out of $3
file_truncated_message_tail=fetched ending $1 of data, truncated $2 out of $3
time_ago_col=Time ago
time_ago_year=$1 year ago
time_ago_years=$1 years ago
time_ago_month=$1 month ago
time_ago_months=$1 months ago
time_ago_week=$1 week ago
time_ago_weeks=$1 weeks ago
time_ago_day=$1 day ago
time_ago_days=$1 days ago
time_ago_hour=$1 hour ago
time_ago_hours=$1 hours ago
time_ago_min=$1 minute ago
time_ago_mins=$1 minutes ago
time_ago_sec=$1 second ago
time_ago_secs=$1 seconds ago
time_in_year=In $1 year
time_in_years=In $1 years
time_in_month=In $1 month
time_in_months=In $1 months
time_in_week=In $1 week
time_in_weeks=In $1 weeks
time_in_day=In $1 day
time_in_days=In $1 days
time_in_hour=In $1 hour
time_in_hours=In $1 hours
time_in_min=In $1 minute
time_in_mins=In $1 minutes
time_in_sec=In $1 second
time_in_secs=In $1 seconds
time_now=Just now
defcert_error=Default $1 bundled SSL certificate is being used. It is highly advised to update default <tt>$2</tt> certificate before proceeding with login.
main_error_details=Error details

View File

@@ -148,6 +148,5 @@ file_truncated_message=$1 داده را واکشی کرد ،$2 از$3 کوتاه
file_truncated_message_head=شروع$1 داده ها ،$2 از$3 کوتاه شده است
file_truncated_message_tail=واکشی شده$1 داده پایان یافته ،$2 از$3 کوتاه شده
defcert_error=گواهی SSL همراه پیش‌فرض $1 در حال استفاده است. به‌شدت توصیه می‌شود قبل از ورود به سیستم، گواهی پیش‌فرض <tt>$2</tt> را به‌روزرسانی کنید.
main_error_details=جزئیات خطا

View File

@@ -1 +1,2 @@
<header> پیکربندی سرور LDAP </header> این صفحه به شما امکان می دهد تا سرور LDAP را که این سیستم سرویس گیرنده با آنها ارتباط برقرار می کند ، انتخاب کنید تا اطلاعات کاربر و گروه را بدست آورید. مهمترین زمینه <b>نام های میزبان سرور LDAP است</b> که در آن شما باید نام میزبان یا آدرس IP سرور LDAP را در شبکه خود وارد کنید. اگر بیش از یک سرور تکرار شده دارید ، همه آنها می توانند در اینجا وارد شوند. <p style=";text-align:right;direction:rtl"> <b>ورود برای کاربران غیر ریشه</b> و <b>گذرواژه در</b> زمینه های <b>کاربران غیر ریشه</b> باید به ترتیب با یک نام کاربری و رمز عبور که توسط سرور LDAP پذیرفته شده است ، پر شود. ورود به طور معمول یک نام ممتاز LDAP خواهد بود ، مانند <i>cn = مدیر ، dc = my-domain ، dc = com</i> . <p style=";text-align:right;direction:rtl"> از آنجا که این ورود و رمز ورود برای همه کاربران یونیکس در سیستم شما قابل مشاهده است ، به طور معمول بر روی یک کاربر LDAP با امتیازات محدود تنظیم شده است (مانند دسترسی فقط خواندنی و امکان مشاهده رمزهای عبور). از آنجا که گذرواژه‌ها در برخی شرایط باید بررسی شوند ، <b>ورود</b> به <b>سیستم کاربر</b> و <b>گذرواژه برای قسمتهای کاربر root</b> باید روی یک نام کاربری و رمزعبور LDAP تنظیم شود که دسترسی به کل سرور LDAP را خوانده باشد. این رمز دوم در پرونده ای ذخیره می شود که فقط توسط کاربر <tt>root</tt> قابل خواندن است ، و از این رو برای کاربران معمولی غیر قابل اعتماد یونیکس امن است. <p style=";text-align:right;direction:rtl"><footer>
<header>پیکربندی سرور LDAP</header> این صفحه به شما امکان می‌دهد سرور LDAP را که این سیستم کلاینت برای دریافت اطلاعات کاربر و گروه با آن تماس خواهد گرفت، انتخاب کنید. مهمترین فیلد، <b>نام میزبان سرور LDAP</b> است که باید نام میزبان یا آدرس IP سرور LDAP در شبکه خود را در آن وارد کنید. اگر بیش از یک سرور تکثیر شده دارید، می‌توانید همه آنها را در اینجا وارد کنید.<p style=";text-align:right;direction:rtl"> فیلدهای <b>«ورود برای کاربران غیر ریشه»</b> و <b>«رمز عبور برای کاربران غیر ریشه»</b> باید به ترتیب با نام کاربری و رمز عبوری که توسط سرور LDAP پذیرفته شده است، پر شوند. نام کاربری معمولاً یک نام متمایز LDAP مانند <i>cn=Manager,dc=my-domain,dc=com</i> خواهد بود.<p style=";text-align:right;direction:rtl"> از آنجا که این نام کاربری و رمز عبور برای همه کاربران یونیکس در سیستم شما قابل مشاهده است، معمولاً روی نام کاربری و رمز عبور یک کاربر LDAP با امتیازات محدود (مانند دسترسی فقط خواندنی و عدم امکان مشاهده رمزهای عبور) تنظیم می‌شود. از آنجا که در برخی شرایط، رمزهای عبور باید بررسی شوند، فیلدهای <b>«ورود» برای کاربر ریشه</b> و <b>«رمز عبور» برای کاربر ریشه</b> باید روی نام کاربری و رمز عبور LDAP تنظیم شوند که دسترسی خواندن به کل سرور LDAP را دارد. این رمز عبور دوم در فایلی ذخیره می‌شود که فقط توسط کاربر <tt>ریشه</tt> قابل خواندن است و بنابراین از کاربران معمولی و غیر قابل اعتماد یونیکس در امان است.<p style=";text-align:right;direction:rtl"><footer>

View File

@@ -5,8 +5,8 @@ index_eperl2=خطایی که توسط Perl هنگام تلاش برای بارگ
index_eldap=$1 برای تنظیم پیکربندی ماژول <a href='$2'></a> اینجا کلیک کنید.
index_eschema=وبمین به سرور LDAP متصل شده است ، اما نتوانسته است این طرح را واگذار کند. اطمینان حاصل کنید که دسترسی در ماژول <a href='$1'>LDAP Server</a> رد نشده است.
index_eimap=$1 شاید <a href='$2'>پیکربندی ماژول شما</a> نادرست باشد.
index_emd5=این ماژول برای استفاده از رمزگذاری MD5 برای گذرواژه‌ها <a href='$1'>پیکربندی شده</a> شده است ، اما ماژول$2 Perl نصب نشده است. <a href='$3'>اینجا را کلیک کنید</a> تا ماژول$2 بارگیری و نصب شود.
index_eslappasswd=این ماژول برای استفاده از رمزگذاری LDAP MD5 برای گذرواژه‌ها <a href='$1'>پیکربندی شده</a> شده است ، اما برنامه <tt>$2</tt> که برای رمزگذاری رمزعبور استفاده شده است نصب نشده است.
index_emd5=این ماژول <a href='$1'>برای استفاده از رمزگذاری MD5 برای رمزهای عبور پیکربندی شده است</a>، اما ماژول Perl $2 نصب نشده است. <a href='$3'>برای دانلود و نصب ماژول $2 اینجا کلیک کنید</a>.
index_eslappasswd=این ماژول <a href='$1'>برای استفاده از رمزگذاری LDAP MD5 برای رمزهای عبور پیکربندی شده است</a>، اما برنامه <tt>$2</tt> که برای رمزگذاری رمز عبور استفاده می‌شود، نصب نشده است.
index_eusearch=جستجوی کاربران زیر $1 : $2 انجام نشد
index_uadd=کاربر جدید LDAP اضافه کنید.
index_gadd=یک گروه جدید LDAP اضافه کنید.

View File

@@ -20,6 +20,7 @@ journal_journalctl_unit=Messages for specific unit
journal_since0=Latest available
journal_since1=Real-time follow
journal_since2=Current boot
journal_since2-1=Last boot
journal_since3=7 days ago
journal_since4=24 hours ago
journal_since5=8 hours ago

View File

@@ -1,7 +1,7 @@
index_title=نمایشگر گزارش های سیستم
index_elogs=هیچ گزارشی برای نمایش یافت نشد
index_to=مقصد ورود به سیستم
index_rule=پیام‌ها انتخاب شدند
index_rule=توضیحات
index_file=پرونده $1
index_cmd=خروجی از $1
index_return=نمایشگر لاگ های سیستم

View File

@@ -35,6 +35,7 @@ return [
{ "" => $text{'journal_since0'} },
{ "--follow" => $text{'journal_since1'} },
{ "--boot" => $text{'journal_since2'} },
{ "--boot -1" => $text{'journal_since2-1'} },
{ "--since '7 days ago'" => $text{'journal_since3'} },
{ "--since '24 hours ago'" => $text{'journal_since4'} },
{ "--since '8 hours ago'" => $text{'journal_since5'} },

View File

@@ -2906,11 +2906,12 @@ if ($@) {
return $rv;
}
# send_text_mail(from, to, cc, subject, body, [smtp-server])
# send_text_mail(from, to, cc, subject, body, [smtp-server],
# [smtp-user, smtp-pass])
# A convenience function for sending a email with just a text body
sub send_text_mail
{
local ($from, $to, $cc, $subject, $body, $smtp) = @_;
local ($from, $to, $cc, $subject, $body, $smtp, $user, $pass) = @_;
local $cs = &get_charset();
local $attach =
{ 'headers' => [ [ 'Content-Type', 'text/plain; charset='.$cs ],
@@ -2922,7 +2923,7 @@ local $mail = { 'headers' =>
[ 'Cc', $cc ],
[ 'Subject', &encode_mimewords($subject) ] ],
'attach' => [ $attach ] };
return &send_mail($mail, undef, 1, 0, $smtp);
return &send_mail($mail, undef, 1, 0, $smtp, $user, $pass);
}
# make_from_line(address, [time])

View File

@@ -31,7 +31,7 @@ show_count=Afficher le nombre de messages dans la boîte de réception?,1,1-Oui,
sort_mode=Trier les boîtes aux lettres par,1,2-Taille,1-Nom d'utilisateur,0-Commander dans le fichier de mot de passe
show_mail=Afficher uniquement les utilisateurs qui ont du courrier?,1,1-Oui,0-Non
size_mode=Inclure tous les dossiers dans la taille?,1,1-Oui,0-Non (premier dossier uniquement)
ignore_users=Ignorer ces noms d'utilisateur (ne pas afficher),15,Liste des utilisateurs ignorés
ignore_users=Ignorer ces noms d'utilisateur (ne pas afficher),15,userIgnoreList
ignore_users_enabled=Ignorer l'état de la liste,1,1-Activé,0-Désactivé
line0.5=Options de dossier,11

View File

@@ -2041,11 +2041,10 @@ return @rv;
# Properly closes all open POP3 and IMAP sessions
sub pop3_logout_all
{
local $f;
foreach $f (keys %pop3_login_handle) {
foreach my $f (keys %pop3_login_handle) {
&pop3_logout($pop3_login_handle{$f}, 1);
}
foreach $f (keys %imap_login_handle) {
foreach my $f (keys %imap_login_handle) {
&imap_logout($imap_login_handle{$f}, 1);
}
}
@@ -2057,21 +2056,48 @@ foreach $f (keys %imap_login_handle) {
# unread, and the number special.
sub imap_login
{
local ($folder) = @_;
local $defport = $folder->{'ssl'} ? 993 : 143;
local $port = $folder->{'port'} || $defport;
local $key = join("/", $folder->{'server'}, $port, $folder->{'user'});
local $h = $imap_login_handle{$key};
local @rv;
if (!$h) {
my ($folder) = @_;
my $defport = $folder->{'ssl'} ? 993 : 143;
my $port = $folder->{'port'} || $defport;
my $key = join("/", $folder->{'server'}, $port, $folder->{'user'});
my $h = $imap_login_handle{$key};
my @rv;
if (!$h && $folder->{'server'} eq '*') {
# Try running the Dovecot imap command
my $imapcmd;
foreach my $c ("/usr/libexec/dovecot/imap",
"/usr/lib/dovecot/imap") {
if (&has_command($c)) {
$imapcmd = $c;
last;
}
}
$imapcmd || return (0, "Dovecot imap command not found");
$imapcmd .= " -u ".($folder->{'user'} eq "*" ||
!$folder->{'user'} ? $remote_user : $folder->{'user'});
print DEBUG "Running IMAP server $imapcmd\n";
eval "use IPC::Open3";
if ($@) {
return (0, "Missing IPC::Open3 Perl module");
}
my ($writefh, $readfh, $errorfh);
my $pid = open3($writefh, $readfh, $errorfh, $imapcmd);
print DEBUG "pid=$pid\n";
$pid || return (0, "Failed to run $imapcmd");
my $l = <$readfh>; # Skip PREAUTH line
$h = [ $writefh, $readfh, $pid ];
$imap_login_handle{$key} = $h;
$imap_login_ssl{$h} = 0;
}
elsif (!$h && $folder->{'server'} ne '*') {
# Need to open socket
$h = ($folder->{'ssl'} ? "SSL" : "")."IMAP".time().++$imap_login_count;
local $error;
my $error;
print DEBUG "Connecting to IMAP server $folder->{'server'}:$port\n";
&open_socket($folder->{'server'}, $port, $h, \$error);
print DEBUG "IMAP error=$error\n" if ($error);
return (0, $error) if ($error);
local $os = select($h); $| = 1; select($os);
my $os = select($h); $| = 1; select($os);
if ($folder->{'ssl'}) {
# Switch to SSL mode
eval "use Net::SSLeay";
@@ -2091,9 +2117,9 @@ if (!$h) {
# Login normally
@rv = &imap_command($h);
return (0, $rv[3] || "No response") if (!$rv[0]);
local $user = $folder->{'user'} eq '*' ? $remote_user
my $user = $folder->{'user'} eq '*' ? $remote_user
: $folder->{'user'};
local $pass = $folder->{'pass'};
my $pass = $folder->{'pass'};
$pass =~ s/\\/\\\\/g;
$pass =~ s/"/\\"/g;
@rv = &imap_command($h,"login \"$user\" \"$pass\"");
@@ -2105,8 +2131,8 @@ if (!$h) {
# Select the right folder (if one was given)
@rv = &imap_command($h, "select \"".($folder->{'mailbox'} || "INBOX")."\"");
return (3, $rv[3]) if (!$rv[0]);
local $count = $rv[2] =~ /\*\s+(\d+)\s+EXISTS/i ? $1 : undef;
local $uidnext = $rv[2] =~ /UIDNEXT\s+(\d+)/ ? $1 : undef;
my $count = $rv[2] =~ /\*\s+(\d+)\s+EXISTS/i ? $1 : undef;
my $uidnext = $rv[2] =~ /UIDNEXT\s+(\d+)/ ? $1 : undef;
return (1, $h, $count, $uidnext);
}
@@ -2124,6 +2150,15 @@ if (!$h) {
my $ssl_con = $imap_login_ssl{$h};
my @rv;
# Get file handles for writing and reading
my ($writefh, $readfh);
if (ref($h)) {
($writefh, $readfh) = @$h;
}
else {
$writefh = $readfh = $h;
}
# Send the command, and read lines until a non-* one is found
my $id = $$."-".$imap_command_count++;
my ($first, $rest) = split(/\r?\n/, $c, 2);
@@ -2136,8 +2171,8 @@ if ($rest) {
$l = Net::SSLeay::ssl_read_until($ssl_con);
}
else {
print $h "$id $first\r\n";
$l = <$h>;
print $writefh "$id $first\r\n";
$l = <$readfh>;
}
print DEBUG "imap line $l";
if ($l =~ /^\+/) {
@@ -2145,7 +2180,7 @@ if ($rest) {
Net::SSLeay::write($ssl_con, $rest."\r\n");
}
else {
print $h $rest."\r\n";
print $writefh $rest."\r\n";
}
}
else {
@@ -2159,7 +2194,7 @@ elsif ($c) {
Net::SSLeay::write($ssl_con, "$id $c\r\n");
}
else {
print $h "$id $c\r\n";
print $writefh "$id $c\r\n";
}
print DEBUG "imap command $id $c\n";
}
@@ -2169,7 +2204,7 @@ while(1) {
$l = Net::SSLeay::ssl_read_until($ssl_con);
}
else {
$l = <$h>;
$l = <$readfh>;
}
print DEBUG "imap line $l";
last if (!$l);
@@ -2191,7 +2226,7 @@ while(1) {
$r = length($buf);
}
else {
$r = read($h, $buf, $size-$got);
$r = read($readfh, $buf, $size-$got);
}
return (0, [ $err ], $err, $err) if ($r <= 0);
$rv[$#rv] .= $buf;
@@ -2229,12 +2264,19 @@ else {
# imap_logout(handle, doquit)
sub imap_logout
{
local @rv = $_[1] ? &imap_command($_[0], "close") : (1, undef);
local $f;
foreach $f (keys %imap_login_handle) {
delete($imap_login_handle{$f}) if ($imap_login_handle{$f} eq $_[0]);
my ($h, $quit) = @_;
my @rv = $quite ? &imap_command($h, "close") : (1, undef);
foreach my $f (keys %imap_login_handle) {
delete($imap_login_handle{$f}) if ($imap_login_handle{$f} eq $h);
}
if (ref($h)) {
close($h->[0]);
close($h->[1]);
waitpid($h->[2], 0);
}
else {
close($h);
}
close($_[0]);
return @rv;
}

View File

@@ -1,34 +1,28 @@
#!/usr/local/bin/perl
# Builds a tar.gz package of a specified Webmin version
if ($0 =~ /^(.*)\//) {
chdir($1);
}
@ARGV == 1 || @ARGV == 2 || @ARGV == 3 || usage();
if ($ARGV[0] eq "-minimal" || $ARGV[0] eq "--minimal") {
$min++;
shift(@ARGV);
}
if ($ARGV[0] =~ /^--exclude-modules/) {
$exclude_modules = $ARGV[0];
shift(@ARGV);
}
if ($ARGV[0] =~ /^--product-type/) {
$product_type = $ARGV[0];
$product_type =~ s/--product-type=//;
if ($product_type =~ /^(minimal|essential)$/) {
$product_suff = "-$product_type";
$product_pref = "$product_type-";
# Parse command line options
$mod_list = 'full';
@ARGV = map { /^--\S+\s+/ ? split(/\s+/, $_) : $_ } @ARGV;
while (@ARGV && $ARGV[0] =~ /^--?/) {
my $opt = shift(@ARGV);
if ($opt eq '--minimal' || $opt eq '-minimal') {
$min = 1;
next;
}
shift(@ARGV);
if ($opt eq '--mod-list') {
$mod_list = shift(@ARGV) // usage();
next;
}
usage();
}
@ARGV == 1 || usage();
$fullvers = $ARGV[0];
$fullvers =~ /^([0-9\.]+)(\-(\d+))?$/ || usage();
$vers = $1;
$release = $3;
$tardir = $min ? "minimal" : "tarballs";
$vfile = $product_pref ? "$product_pref$fullvers" : $min ? "$fullvers-minimal" : $fullvers;
$zipdir = "zips";
$fullvers =~ /^([0-9\.]+)(?:-(\d+))?$/ || usage();
($vers, $release) = ($1, $2);
$tardir = $min ? 'minimal' : 'tarballs';
$vfile = $min ? "$fullvers-minimal" : $fullvers;
$zipdir = 'zips';
$vers || usage();
@files = ("config.cgi", "config-*-linux",
@@ -70,20 +64,15 @@ if ($min) {
}
else {
# All the modules
my $mod_def_list;
my $mods_list;
my $curr_dir = $0;
($curr_dir) = $curr_dir =~ /^(.+)\/[^\/]+$/;
$curr_dir = "." if ($curr_dir !~ /^\//);
open(my $fh, '<', "$curr_dir/mod_def_list.txt") || die "Error opening \"mod_def_list.txt\" : $!\n";
$mod_def_list = do { local $/; <$fh> };
open(my $fh, '<', "$curr_dir/mod_${mod_list}_list.txt") ||
die "Error opening \"mod_${mod_list}_list.txt\" : $!\n";
$mods_list = do { local $/; <$fh> };
close($fh);
@mlist = split(/\s+/, $mod_def_list);
if ($exclude_modules) {
$exclude_modules =~ s/--exclude-modules=//;
my @mlist_excluded =
grep { my $f = $_; ! grep $_ eq $f, split(',', $exclude_modules) } @mlist;
@mlist = @mlist_excluded;
}
@mlist = split(/\s+/, $mods_list);
}
# Build EOL data
@@ -296,6 +285,6 @@ close(ARFILE);
sub usage
{
die "usage: makedist.pl [-minimal] [--exclude-modules] <version>";
die "Usage: $0 [--minimal] [--mod-list type] <version>\n";
}

View File

@@ -25,14 +25,63 @@ my $changelog_file = "$debian_dir/changelog";
my $files_file = "$debian_dir/files";
# Parse command-line args
my ($force_theme, $url, $upstream, $provides, $debdepends, $debrecommends,
my ($force_theme, $url, $upstream,
$no_prefix, $force_usermin, $release, $allow_overwrite, $final_mod,
$dsc_file, $dir, $ver, @exclude);
$dsc_file, $dir, $ver, @exclude,
$debdepends, $nodebdepends, $debrecommends, $nodebrecommends,
$no_requires, $no_recommends, $no_suggests, $no_conflicts, $no_replaces,
$no_breaks, $no_provides, $no_obsoletes);
my $mod_list = 'full';
while(@ARGV) {
my $a = shift(@ARGV);
if ($a eq "--force-theme") {
$force_theme = 1;
if ($a eq "--deb-depends" || $a eq "--mod-depends") {
$debdepends = 1;
}
elsif ($a eq "--no-mod-depends") {
$nodebdepends = 1;
}
elsif ($a eq "--deb-recommends" || $a eq "--mod-recommends") {
$debrecommends = 1;
}
elsif ($a eq "--no-mod-recommends") {
$nodebrecommends = 1;
}
# --recommends, --suggests, --conflicts, --provides and --obsoletes are
# not for Webmin modules, and not meant to have prefix, and populated
# from module.info automatically
# --no-requires, --no-recommends, --no-suggests,
# --no-conflicts, --no-replaces, --no-breaks, --no-provides,
# --no-obsoletes can be used to disable the automatic population of
# these fields from module.info
elsif ($a eq "--no-requires") {
$no_requires = 1;
}
elsif ($a eq "--no-recommends") {
$no_recommends = 1;
}
elsif ($a eq "--no-suggests") {
$no_suggests = 1;
}
elsif ($a eq "--no-conflicts") {
$no_conflicts = 1;
}
elsif ($a eq "--no-replaces") {
$no_replaces = 1;
}
elsif ($a eq "--no-breaks") {
$no_breaks = 1;
}
elsif ($a eq "--no-provides") {
$no_provides = 1;
}
elsif ($a eq "--no-obsoletes") {
$no_obsoletes = 1;
}
elsif ($a eq "--no-prefix") {
$no_prefix = 1;
}
elsif ($a eq "--licence" || $a eq "--license") {
$licence = shift(@ARGV);
@@ -46,17 +95,8 @@ while(@ARGV) {
elsif ($a eq "--upstream") {
$upstream = shift(@ARGV);
}
elsif ($a eq "--provides") {
$provides = shift(@ARGV);
}
elsif ($a eq "--deb-depends") {
$debdepends = 1;
}
elsif ($a eq "--deb-recommends") {
$debrecommends = 1;
}
elsif ($a eq "--no-prefix") {
$no_prefix = 1;
elsif ($a eq "--release") {
$release = shift(@ARGV);
}
elsif ($a eq "--usermin") {
$force_usermin = 1;
@@ -67,18 +107,21 @@ while(@ARGV) {
elsif ($a eq "--dir") {
$final_mod = shift(@ARGV);
}
elsif ($a eq "--release") {
$release = shift(@ARGV);
}
elsif ($a eq "--allow-overwrite") {
$allow_overwrite = 1;
}
elsif ($a eq "--dsc-file") {
$dsc_file = shift(@ARGV);
}
elsif ($a eq "--force-theme") {
$force_theme = 1;
}
elsif ($a eq "--exclude") {
push(@exclude, shift(@ARGV));
}
elsif ($a eq "--mod-list") {
$mod_list = shift(@ARGV);
}
elsif ($a =~ /^\-\-/) {
print STDERR "Unknown option $a\n";
exit(1);
@@ -93,23 +136,39 @@ while(@ARGV) {
}
}
# Disable module's depends and recommends if set in extra flags
$debdepends = 0 if ($nodebdepends);
$debrecommends = 0 if ($nodebrecommends);
# Validate args
if (!$dir) {
print "usage: ", CYAN, "makemoduledeb.pl ";
print YELLOW, "[--force-theme]\n";
print " [--deb-depends]\n";
print CYAN, "<module> [version]";
print YELLOW, "\n";
print " [--mod-depends] [--no-mod-depends]\n";
print " [--mod-recommends] [--no-mod-recommends]\n";
print " [--no-requires]\n";
print " [--no-suggests]\n";
print " [--no-conflicts]\n";
print " [--no-replaces]\n";
print " [--no-breaks]\n";
print " [--no-provides]\n";
print " [--no-obsoletes]\n";
print " [--no-prefix]\n";
print " [--licence name]\n";
print " [--email 'name <address>']\n";
print " [--url url]\n";
print " [--upstream 'name <address>']\n";
print " [--provides 'name1 name2']\n";
print " [--release version]\n";
print " [--usermin]\n";
print " [--target-dir directory]\n";
print " [--dir directory-in-package]\n";
print " [--allow-overwrite]\n";
print " [--dsc-file file.dsc]\n";
print CYAN, " <module> ";
print YELLOW, "[version]\n", RESET;
print " [--force-theme]\n";
print " [--exclude file-or-dir]\n";
print " [--mod-list full|core|minimal]\n";
print RESET, "\n";
exit(1);
}
chop(my $par = `dirname $dir`);
@@ -242,7 +301,7 @@ if ($debdepends && exists($minfo{'depends'})) {
my $curr_dir = $0;
($curr_dir) = $curr_dir =~ /^(.+)\/[^\/]+$/;
$curr_dir = "." if ($curr_dir !~ /^\//);
my $mod_def_file = "$curr_dir/mod_def_list.txt";
my $mod_def_file = "$curr_dir/mod_${mod_list}_list.txt";
next if (! -r $mod_def_file);
open(my $fh, '<', $mod_def_file) ||
die "Error opening \"$mod_def_file\" : $!\n";
@@ -258,20 +317,83 @@ if ($debdepends && exists($minfo{'depends'})) {
}
my $rdeps = join(", ", @rdeps);
# Recommends: header
# Build list of recommended packages on other DEBs, for inclusion as an DEB
# Recommends: header (Webmin module with prefixes)
my $rrecom = "";
if ($debrecommends && defined($minfo{'recommends'})) {
my @rrecom;
foreach my $d (split(/\s+/, $minfo{'recommends'})) {
push(@rrecom, $prefix.$d);
}
$rrecom = join(", ", @rrecom);
}
# Build (append) list of required packages (not Webmin modules)
my @rrequires = ( );
if (!$no_requires && exists($minfo{'deb_requires'})) {
foreach my $debrequire (split(/\s+/, $minfo{'deb_requires'})) {
push(@rrequires, $debrequire);
}
$rdeps .= ($rdeps ? ', ' : '') . join(", ", @rrequires) if (@rrequires);
}
# Build (append) list of recommended packages (not Webmin modules)
my @rrecommends = ( );
if ($debrecommends && exists($minfo{'recommends'})) {
foreach my $debrecommend (split(/\s+/, $minfo{'recommends'})) {
if (!$no_recommends && exists($minfo{'deb_recommends'})) {
foreach my $debrecommend (split(/\s+/, $minfo{'deb_recommends'})) {
push(@rrecommends, $debrecommend);
}
$rrecom .= ($rrecom ? ', ' : '') . join(", ", @rrecommends)
if (@rrecommends);
}
# Build (standalone) list of suggested packages (not Webmin modules)
my @rsuggests = ( );
if (!$no_suggests && exists($minfo{'deb_suggests'})) {
foreach my $debsuggest (split(/\s+/, $minfo{'deb_suggests'})) {
push(@rsuggests, $debsuggest);
}
}
# If module has 'provides', consider it too
$provides .= ($provides ? " " : "") . "$prefix$mod";
$provides .= ($provides ? " " : "") . $minfo{'provides'}
if (exists($minfo{'provides'}));
my @provides = split(/\s+/, $provides);
$provides = join(", ", @provides);
# Build (standalone) list of conflicts (not Webmin modules)
my @rconflicts = ( );
if (!$no_conflicts && exists($minfo{'deb_conflicts'})) {
foreach my $debconflict (split(/\s+/, $minfo{'deb_conflicts'})) {
push(@rconflicts, $debconflict);
}
}
# Build (standalone) list of replaces (not Webmin modules)
my @rreplaces = ( );
if (!$no_replaces && exists($minfo{'deb_replaces'})) {
foreach my $debreplace (split(/\s+/, $minfo{'deb_replaces'})) {
push(@rreplaces, $debreplace);
}
}
# Build (standalone) list of breaks (not Webmin modules)
my @rbreaks = ( );
if (!$no_breaks && exists($minfo{'deb_breaks'})) {
foreach my $debbreak (split(/\s+/, $minfo{'deb_breaks'})) {
push(@rbreaks, $debbreak);
}
}
# Build (standalone) list of obsoletes (replaces+conflicts) (not Webmin modules)
if (!$no_obsoletes && exists($minfo{'deb_obsoletes'})) {
foreach my $debobsolete (split(/\s+/, $minfo{'deb_obsoletes'})) {
push(@rconflicts, $debobsolete);
push(@rreplaces, $debobsolete);
}
}
# Build (standalone) list of provides (not Webmin modules)
my @rprovides = ( );
if (!$no_provides && exists($minfo{'deb_provides'})) {
foreach my $debprovide (split(/\s+/, $minfo{'deb_provides'})) {
push(@rprovides, $debprovide);
}
}
# Create the control file
my $kbsize = int(($size-1) / 1024)+1;
@@ -285,12 +407,16 @@ Architecture: all
Essential: no
Depends: $rdeps
EOF
print $CONTROL "Recommends: ", join(", ", @rrecommends), "\n" if (@rrecommends);
print $CONTROL "Recommends: $rrecom\n" if ($rrecom);
print $CONTROL "Suggests: ", join(", ", @rsuggests), "\n" if (@rsuggests);
print $CONTROL "Conflicts: ", join(", ", @rconflicts), "\n" if (@rconflicts);
print $CONTROL "Replaces: ", join(", ", @rreplaces), "\n" if (@rreplaces);
print $CONTROL "Breaks: ", join(", ", @rbreaks), "\n" if (@rbreaks);
print $CONTROL "Provides: ", join(", ", @rprovides), "\n" if (@rprovides);
print $CONTROL <<EOF;
Pre-Depends: bash, perl
Installed-Size: $kbsize
Maintainer: $email
Provides: $provides
Description: $desc
EOF
close($CONTROL);
@@ -465,7 +591,7 @@ if [ "$istheme" = "1" -a "\$1" != "upgrade" ]; then
fi
fi
# Run the pre-uninstall script, if we are not upgrading
if [ "$product" = "webmin" -a "\$1" = "0" -a -r "/usr/share/$product/$mod/uninstall.pl" ]; then
if [ "$product" = "webmin" -a "\$1" != "upgrade" -a -r "/usr/share/$product/$mod/uninstall.pl" ]; then
cd /usr/share/$product
WEBMIN_CONFIG=/etc/$product WEBMIN_VAR=/var/$product /usr/share/$product/run-uninstalls.pl $mod
fi

View File

@@ -32,43 +32,67 @@ my $release = 1;
$ENV{'PATH'} = "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin";
my $allow_overwrite = 0;
my ($force_theme, $rpmdepends, $rpmrecommends, $no_prefix, $set_prefix, $vendor,
$provides, $obsoletes, $url, $force_usermin, $final_mod, $sign, $keyname,
$epoch, $dir, $ver, @extrareqs, @exclude);
my ($force_theme, $no_prefix, $set_prefix,
$obsolete_wbm, $vendor, $url, $force_usermin, $final_mod, $sign, $keyname,
$epoch, $dir, $ver, @exclude,
$rpmdepends, $norpmdepends, $rpmrecommends, $norpmrecommends,
$no_requires, $no_recommends, $no_suggests, $no_conflicts, $no_provides,
$no_obsoletes);
my $mod_list = 'full';
# Parse command-line args
while(@ARGV) {
# XXX Untainting isn't needed when running as non-root?
my $a = &untaint(shift(@ARGV));
if ($a eq "--force-theme") {
$force_theme = 1;
}
elsif ($a eq "--rpm-dir") {
$basedir = &untaint(shift(@ARGV));
}
elsif ($a eq "--licence" || $a eq "--license") {
$licence = &untaint(shift(@ARGV));
}
elsif ($a eq "--rpm-depends") {
if ($a eq "--rpm-depends" || $a eq "--mod-depends") {
$rpmdepends = 1;
}
elsif ($a eq "--rpm-recommends") {
elsif ($a eq "--no-mod-depends") {
$norpmdepends = 1;
}
elsif ($a eq "--rpm-recommends" || $a eq "--mod-recommends") {
$rpmrecommends = 1;
}
elsif ($a eq "--no-mod-recommends") {
$norpmrecommends = 1;
}
# --requires, --recommends, --suggests, --conflicts, --provides and
# --obsoletes are not for Webmin modules, and not meant to have prefix,
# and populated from module.info automatically
# --no-requires, --no-recommends, --no-suggests,
# --no-conflicts, --no-provides, --no-obsoletes can be used
# to disable the automatic population of these fields from module.info
elsif ($a eq "--no-requires") {
$no_requires = 1;
}
elsif ($a eq "--no-recommends") {
$no_recommends = 1;
}
elsif ($a eq "--no-suggests") {
$no_suggests = 1;
}
elsif ($a eq "--no-conflicts") {
$no_conflicts = 1;
}
elsif ($a eq "--no-provides") {
$no_provides = 1;
}
elsif ($a eq "--no-obsoletes") {
$no_obsoletes = 1;
}
elsif ($a eq "--no-prefix") {
$no_prefix = 1;
}
elsif ($a eq "--prefix") {
$set_prefix = &untaint(shift(@ARGV));
}
elsif ($a eq "--vendor") {
$vendor = &untaint(shift(@ARGV));
elsif ($a eq "--obsolete-wbm") {
$obsolete_wbm = 1;
}
elsif ($a eq "--provides") {
$provides = &untaint(shift(@ARGV));
}
elsif ($a eq "--obsoletes") {
$obsoletes = &untaint(shift(@ARGV));
elsif ($a eq "--licence" || $a eq "--license") {
$licence = &untaint(shift(@ARGV));
}
elsif ($a eq "--url") {
$url = shift(@ARGV);
@@ -85,12 +109,18 @@ while(@ARGV) {
elsif ($a eq "--dir") {
$final_mod = &untaint(shift(@ARGV));
}
elsif ($a eq "--requires") {
push(@extrareqs, shift(@ARGV));
}
elsif ($a eq "--allow-overwrite") {
$allow_overwrite = 1;
}
elsif ($a eq "--force-theme") {
$force_theme = 1;
}
elsif ($a eq "--rpm-dir") {
$basedir = &untaint(shift(@ARGV));
}
elsif ($a eq "--vendor") {
$vendor = &untaint(shift(@ARGV));
}
elsif ($a eq "--sign") {
$sign = 1;
}
@@ -103,6 +133,9 @@ while(@ARGV) {
elsif ($a eq "--exclude") {
push(@exclude, shift(@ARGV));
}
elsif ($a eq "--mod-list") {
$mod_list = shift(@ARGV);
}
elsif ($a =~ /^\-\-/) {
print STDERR "Unknown option $a\n";
exit(1);
@@ -117,27 +150,41 @@ while(@ARGV) {
}
}
# Disable module's depends and recommends if set in extra flags
$rpmdepends = 0 if ($norpmdepends);
$rpmrecommends = 0 if ($norpmrecommends);
# Validate args
if (!$dir) {
print "usage: ";
print CYAN, "makemodulerpm.pl ";
print YELLOW, "[--force-theme]\n";
print CYAN, "makemodulerpm.pl <module> [version]", RESET;
print YELLOW, "\n";
print " [--mod-depends] [--no-mod-depends]\n";
print " [--mod-recommends] [--no-mod-recommends]\n";
print " [--no-requires]\n";
print " [--no-suggests]\n";
print " [--no-conflicts]\n";
print " [--no-provides]\n";
print " [--no-obsoletes]\n";
print " [--rpm-dir directory]\n";
print " [--rpm-depends]\n";
print " [--no-prefix]\n";
print " [--prefix prefix]\n";
print " [--prefix prefix]\n";
print " [--no-wbm-prefix]\n";
print " [--vendor name]\n";
print " [--licence name]\n";
print " [--url url]\n";
print " [--provides provides]\n";
print " [--usermin]\n";
print " [--release number]\n";
print " [--epoch number]\n";
print " [--target-dir directory]\n";
print " [--dir directory-in-package]\n";
print " [--allow-overwrite]\n";
print CYAN, " <module> ";
print YELLOW, "[version]\n", RESET;
print " [--force-theme]\n";
print " [--sign]\n";
print " [--key keyname]\n";
print " [--exclude file]\n";
print " [--mod-list full|core|minimal]\n";
print RESET, "\n";
exit(1);
}
my $par;
@@ -167,7 +214,8 @@ if (!-d $spec_dir || !-d $rpm_source_dir || !-d $rpm_dir) {
# Is this actually a module or theme directory?
-d $source_dir || die "$dir is not a directory";
my ($depends, $prefix, $desc, $prog, $iver, $istheme, $post_config);
my ($depends, $prefix, $prefix_auto, $desc, $prog, $iver,
$istheme, $post_config);
if ($minfo{'desc'}) {
$depends = join(" ", map { s/\/[0-9\.]+//; $_ }
grep { !/^[0-9\.]+$/ }
@@ -203,6 +251,7 @@ elsif ($tinfo{'desc'}) {
else {
die "$source_dir does not appear to be a webmin module or theme";
}
$prefix_auto = $prefix;
$prefix = "" if ($no_prefix);
$prefix = $set_prefix if ($set_prefix);
my $ucprog = ucfirst($prog);
@@ -244,7 +293,7 @@ system("/bin/rm -rf /tmp/makemodulerpm");
# Build list of dependencies on other RPMs, for inclusion as an RPM
# Requires: header
my $rdeps;
my $rdeps = "";
if ($rpmdepends && defined($minfo{'depends'})) {
my @rdeps;
foreach my $d (split(/\s+/, $minfo{'depends'})) {
@@ -270,7 +319,7 @@ if ($rpmdepends && defined($minfo{'depends'})) {
my $curr_dir = $0;
($curr_dir) = $curr_dir =~ /^(.+)\/[^\/]+$/;
$curr_dir = "." if ($curr_dir !~ /^\//);
my $mod_def_file = "$curr_dir/mod_def_list.txt";
my $mod_def_file = "$curr_dir/mod_${mod_list}_list.txt";
next if (! -r $mod_def_file);
open(my $fh, '<', $mod_def_file) ||
die "Error opening \"$mod_def_file\" : $!\n";
@@ -283,24 +332,78 @@ if ($rpmdepends && defined($minfo{'depends'})) {
$dver ? ($prefix.$dmod, ">=", $dver) :
($prefix.$dmod));
}
$rdeps = join(" ", @rdeps, @extrareqs);
$rdeps = join(" ", @rdeps);
}
# Build list of recommended packages
# Build list of recommended packages on other RPMs, for inclusion as an RPM
# Recommends: header (Webmin module with prefixes)
my $rrecom = "";
if ($rpmrecommends && defined($minfo{'recommends'})) {
my @rrecom;
foreach my $d (split(/\s+/, $minfo{'recommends'})) {
push(@rrecom, $prefix.$d);
}
$rrecom = join(" ", @rrecom);
}
# Build (append) list of required packages (not Webmin modules)
my @rrequires = ( );
if (!$no_requires && exists($minfo{'rpm_requires'})) {
foreach my $rpmrequire (split(/\s+/, $minfo{'rpm_requires'})) {
push(@rrequires, $rpmrequire);
}
$rdeps .= ($rdeps ? ' ' : '') . join(" ", @rrequires) if (@rrequires);
}
# Build (append) list of recommended packages (not Webmin modules)
my @rrecommends = ( );
if ($rpmrecommends && exists($minfo{'recommends'})) {
foreach my $rpmrecommend (split(/\s+/, $minfo{'recommends'})) {
if (!$no_recommends && exists($minfo{'rpm_recommends'})) {
foreach my $rpmrecommend (split(/\s+/, $minfo{'rpm_recommends'})) {
push(@rrecommends, $rpmrecommend);
}
$rrecom .= ($rrecom ? ' ' : '') . join(" ", @rrecommends)
if (@rrecommends);
}
# Build (standalone) list of suggested packages (not Webmin modules)
my @rsuggests = ( );
if (!$no_suggests && exists($minfo{'rpm_suggests'})) {
foreach my $rpmsuggest (split(/\s+/, $minfo{'rpm_suggests'})) {
push(@rsuggests, $rpmsuggest);
}
}
# If module has 'provides', consider it too
$provides .= ($provides ? " " : "") . $minfo{'provides'}
if (exists($minfo{'provides'}));
# Build (standalone) list of conflicts (not Webmin modules)
my @rconflicts = ( );
if (!$no_conflicts && exists($minfo{'rpm_conflicts'})) {
foreach my $rpmconflict (split(/\s+/, $minfo{'rpm_conflicts'})) {
push(@rconflicts, $rpmconflict);
}
}
# Build (standalone) list of provides (not Webmin modules)
my @rprovides = ( );
if (!$no_provides && exists($minfo{'rpm_provides'})) {
foreach my $rpmprovide (split(/\s+/, $minfo{'rpm_provides'})) {
push(@rprovides, $rpmprovide);
}
}
# Build (standalone) list of obsoletes (not Webmin modules)
my @robsoletes = ( );
if (!$no_obsoletes && exists($minfo{'rpm_obsoletes'})) {
foreach my $rpmobsolete (split(/\s+/, $minfo{'rpm_obsoletes'})) {
push(@robsoletes, $rpmobsolete);
}
}
# Fix support for old module name prefixes
if ($obsolete_wbm) {
push(@rprovides, "$prefix_auto$mod");
push(@robsoletes, "$prefix_auto$mod");
}
# Create the SPEC file
my $providesheader = $provides ? "Provides: $provides" : "";
my $obsoletesheader = $obsoletes ? "Obsoletes: $obsoletes" : "";
my $vendorheader = $vendor ? "Vendor: $vendor" : "";
my $urlheader = $url ? "URL: $url" : "";
my $epochheader = $epoch ? "Epoch: $epoch" : "";
@@ -316,9 +419,13 @@ Summary: $desc
Name: $prefix$mod
Version: $ver
Release: $release
Requires: /bin/sh /usr/bin/perl /usr/libexec/$prog $rdeps
Requires: /bin/sh /usr/bin/perl $prog $rdeps
EOF
print $SPEC "Recommends: " . join(" ", @rrecommends) . "\n" if (@rrecommends);
print $SPEC "Recommends: $rrecom\n" if ($rrecom);
print $SPEC "Suggests: " . join(" ", @rsuggests) . "\n" if (@rsuggests);
print $SPEC "Conflicts: " . join(" ", @rconflicts) . "\n" if (@rconflicts);
print $SPEC "Provides: " . join(" ", @rprovides) . "\n" if (@rprovides);
print $SPEC "Obsoletes: " . join(" ", @robsoletes) . "\n" if (@robsoletes);
print $SPEC <<EOF;
Autoreq: 0
Autoprov: 0
@@ -328,8 +435,6 @@ Source: $mod.tar.gz
BuildRoot: /tmp/%{name}-%{version}
BuildArchitectures: noarch
$epochheader
$providesheader
$obsoletesheader
$vendorheader
$urlheader
%description

View File

@@ -90,7 +90,7 @@ Requires(pre): /usr/bin/perl
Requires: /bin/sh /usr/bin/perl perl(lib) perl(open) perl(Net::SSLeay) perl(Time::Local) perl(Data::Dumper) perl(File::Path) perl(File::Basename) perl(Digest::SHA) perl(Digest::MD5) openssl unzip tar gzip
Recommends: perl(DateTime) perl(DateTime::TimeZone) perl(DateTime::Locale) perl(Time::Piece) perl(Encode::Detect) perl(Time::HiRes) perl(Socket6) html2text shared-mime-info perl-File-Basename perl-File-Path perl-JSON-XS qrencode perl(DBI) perl(DBD::mysql)
AutoReq: 0
License: BSD-3-clause
License: BSD-3-Clause
Group: System/Tools
Source: http://www.webmin.com/download/$tarfile
Vendor: $rpm_maintainer
@@ -229,6 +229,11 @@ if [ "\$tempdir" = "" ]; then
fi
export config_dir var_dir perl autoos port login crypt host ssl nochown autothird noperlpath nouninstall nostart allow atboot makeboot nostop nodepsmsg
./setup.sh >\$tempdir/webmin-setup.out 2>&1
grep sudo= /etc/webmin/miniserv.conf >/dev/null 2>&1
if [ "\$?" = 1 ]; then
# Allow sudo-based logins
echo sudo=1 >>/etc/webmin/miniserv.conf
fi
chmod 600 \$tempdir/webmin-setup.out
rm -f /var/lock/subsys/webmin
cd /usr/libexec/webmin

View File

@@ -22,7 +22,7 @@ index_download=دانلود سرور
index_downloaddesc=برای دانلود و نصب آخرین نسخه فایل JAR سرور Minecraft روی این دکمه کلیک کنید.
index_upgradedesc=نسخه جدید سرور Minecraft اکنون برای دانلود در دسترس است.
index_upgrade=اکنون ارتقا دهید
index_startwarn=هشدار! ممکن است نسخه دیگری از Minecraft برای شروع در زمان راه‌اندازی پیکربندی شود.
index_startwarn=هشدار! ممکن است نسخه متفاوتی از ماینکرفت طوری پیکربندی شده باشد که هنگام بوت شدن شروع به کار کند.
index_portwarn=هشدار! فرآیند دیگر با PID $1 استفاده از پورت سرور Minecraft است. این ممکن است نسخه دیگری از سرور Minecraft باشد.
check_edir=دایرکتوری پایه $1 وجود ندارد
@@ -85,7 +85,7 @@ users_enabled=اجرای لیست سفید فعال شده است؟
conns_title=بازیکنان متصل
conns_desc=بازیکنان زیر در حال حاضر به سرور شما متصل هستند. روی نام بازیکن کلیک کنید تا اقدامات روی آن انجام شود.
conns_edown=پخش‌کننده‌های متصل را نمی‌توان مدیریت کرد مگر اینکه سرور در حال اجرا باشد
conns_edown=بازیکنان متصل را نمی‌توان مدیریت کرد مگر اینکه سرور در حال اجرا باشد
conns_none=در حال حاضر هیچ بازیکنی به سرور متصل نیست.
conns_disc=قطع ارتباط انتخاب شد
conns_enter=مدیریت بازیکن به نام:
@@ -293,10 +293,10 @@ backup_dir=پشتیبان گیری در دایرکتوری
backup_worlds=دنیاهایی که باید گنجانده شوند
backup_worlds1=همه دنیاها
backup_worlds0=فقط انتخاب شده ..
backup_err=پشتیبان‌گیری برنامه‌ریزی‌شده ذخیره نشد
backup_err=ذخیره نسخه پشتیبان زمان‌بندی‌شده ناموفق بود
backup_edir=فهرست مقصد گم شده یا غیرمطلق
backup_eworlds=هیچ جهانی انتخاب نشده است
backup_desc=این صفحه به شما امکان می دهد تا از دنیای سرور Minecraft خود بک آپ های برنامه ریزی شده خودکار تنظیم کنید. فهرست مقصد می‌تواند حاوی کدهای تاریخ به سبک strftime مانند %d، %m و %Y باشد تا پشتیبان‌های روزانه جداگانه ذخیره شود.
backup_desc=این صفحه به شما امکان می‌دهد تا پشتیبان‌گیری خودکار و زمان‌بندی‌شده از دنیای سرورهای ماینکرفت خود را تنظیم کنید. دایرکتوری مقصد می‌تواند شامل کدهای تاریخ به سبک strftime مانند %d، %m و %Y باشد تا پشتیبان‌گیری‌های روزانه جداگانه‌ای ذخیره شوند.
backup_email=ایمیل گزارش پشتیبان به
backup_noemail=هیچ کس
backup_email_err=فقط در صورت شکست ایمیل ارسال کنید
@@ -317,8 +317,8 @@ log_ip=آی پی های ممنوعه آپدیت شد
log_manual=فایل پیکربندی ویرایش شده به صورت دستی
log_atboot=سرور در زمان بوت فعال شد
log_delboot=سرور در زمان بوت غیرفعال شد
log_enable_backup=پشتیبان‌گیری برنامه‌ریزی‌شده را در $1 فعال کرد
log_disable_backup=پشتیبان‌گیری برنامه‌ریزی‌شده را غیرفعال کرد
log_enable_backup=پشتیبان‌گیری زمان‌بندی‌شده برای $1 فعال شد
log_disable_backup=پشتیبان‌گیری زمان‌بندی‌شده غیرفعال شد
log_playtime=محدودیت های زمانی بازی تغییر کرد
log_changeversion=سرور به نسخه $1 تغییر کرد
log_addversion=نسخه سرور $1 اضافه شد
@@ -352,7 +352,7 @@ playtime_all=همه کاربران
playtime_ips=برای اتصالات از
playtime_sel2=IP ها و شبکه های فهرست شده
playtime_all2=همه آدرس ها
playtime_err=محدودیت‌های زمانی بازی ذخیره نشد
playtime_err=ذخیره محدودیت‌های زمانی بازی ناموفق بود
playtime_emax=حداکثر زمان باید یک عدد باشد
playtime_eusers=هیچ کاربری برای محدود کردن وارد نشده است
playtime_edays=هیچ روزی از هفته انتخاب نشده است

View File

@@ -383,12 +383,7 @@ foreach $mod (split(/\s+/, $config{'preuse'})) {
}
# Open debug log if set
if ($config{'debuglog'}) {
open(DEBUG, ">>$config{'debuglog'}");
chmod(0700, $config{'debuglog'});
select(DEBUG); $| = 1; select(STDOUT);
print DEBUG "miniserv.pl starting ..\n";
}
&open_debug_to_log("miniserv.pl starting ..\n");
# Write out (empty) blocked hosts file
&write_blocked_file();
@@ -595,9 +590,16 @@ if ($config{'logclear'}) {
# need to clear log
$write_logtime = 1;
unlink($config{'logfile'});
unlink($config{'errorlog'})
if ($config{'errorlog'} &&
$config{'errorlog'} ne '-');
unlink($config{'debuglog'})
if ($config{'debuglog'});
}
}
else { $write_logtime = 1; }
else {
$write_logtime = 1;
}
if ($write_logtime) {
open(LOGTIME, ">$config{'logfile'}.time");
print LOGTIME time(),"\n";
@@ -634,6 +636,16 @@ local $remove_session_count = 0;
$need_pipes = $config{'passdelay'} || $config{'session'};
$cron_runs = 0;
while(1) {
# Periodically re-open error and debug logs if deleted via regular
# log clearing
if ($config{'errorlog'} && $config{'errorlog'} ne '-' &&
!-e $config{'errorlog'}) {
&redirect_stderr_to_log();
}
if ($config{'debuglog'} && !-e $config{'debuglog'}) {
&open_debug_to_log();
}
# Check if any webmin cron jobs are ready to run
&execute_ready_webmin_crons($cron_runs++);
@@ -918,11 +930,27 @@ while(1) {
# Initialize SSL for this connection
if ($use_ssl) {
($ssl_con, $ssl_certfile,
$ssl_keyfile) = &ssl_connection_for_ip(
SOCK, $ipv6fhs{$s});
print DEBUG "ssl_con returned $ssl_con\n";
$ssl_con || exit;
my $byte = '';
# Look at the first byte of the socket
# buffer but don't consume it
recv(SOCK, $byte, 1, MSG_PEEK);
if (length($byte) &&
# Check if the first byte is a TLS
(ord($byte) == 0x16 ||
# Check if the first byte is SSL
(ord($byte) & 0x80))) {
($ssl_con,
$ssl_certfile,
$ssl_keyfile) =
&ssl_connection_for_ip(
SOCK, $ipv6fhs{$s});
print DEBUG "ssl_con returned ".
"$ssl_con\n";
$ssl_con || exit;
}
else {
$use_ssl = 0;
}
}
print DEBUG
@@ -1091,8 +1119,8 @@ while(1) {
elsif ($inline =~ /^verify\s+(\S+)\s+(\S+)\s+(\S+)/) {
# Verifying a session ID
local $session_id = $1;
local $notimeout = $2;
local $vip = $3;
local $vip = $2;
local $uptime = $3;
local $skey = $sessiondb{$session_id} ?
$session_id :
&hash_session_id($session_id);
@@ -1105,8 +1133,7 @@ while(1) {
split(/\s+/, $sessiondb{$skey});
local $lot = &get_logout_time($user, $session_id);
if ($lot &&
$time_now - $ltime > $lot*60 &&
!$notimeout) {
$time_now - $ltime > $lot*60) {
# Session has timed out due to
# idle time being hit
print $outfd "1 ",($time_now - $ltime),"\n";
@@ -1131,7 +1158,9 @@ while(1) {
# Session is OK, update last time
# and remote IP
print $outfd "2 $user\n";
$sessiondb{$skey} = "$user $time_now $vip";
if ($uptime) {
$sessiondb{$skey} = "$user $time_now $vip";
}
}
}
}
@@ -1349,91 +1378,38 @@ local $origreqline = &read_line();
$method = $page = $request_uri = undef;
print DEBUG "handle_request reqline=$reqline\n";
alarm(0);
if (!$reqline && (!$use_ssl || $checked_timeout > 1)) {
if (!$use_ssl && $config{'ssl'} && $config{'ssl_enforce'}) {
# This is an http request when https must be enforced
local $urlhost = $config{'musthost'} || $host;
$urlhost = "[".$urlhost."]" if (&check_ip6address($urlhost));
local $wantport = $port;
if ($wantport == 80 &&
&indexof(443, @listening_on_ports) >= 0) {
# Connection was to port 80, but since we are also
# accepting on port 443, redirect to that
$wantport = 443;
}
local $url = $wantport == 443
? "https://$urlhost/"
: "https://$urlhost:$wantport/";
&write_data("HTTP/1.0 302 Moved Temporarily\r\n");
&write_data("Date: $datestr\r\n");
&write_data("Server: @{[&server_info()]}\r\n");
&write_data("Location: $url\r\n");
&write_keep_alive(0);
&write_data("\r\n");
&log_error("Redirecting HTTP request to HTTPS for $acptip");
&log_request($loghost, $authuser, $reqline, 302, 0);
return 0;
}
elsif (!$reqline && $checked_timeout > 1) {
# An empty request .. just close the connection
print DEBUG "handle_request: rejecting empty request\n";
return 0;
}
elsif ($reqline !~ /^(\S+)\s+(.*)\s+HTTP\/1\..$/) {
print DEBUG "handle_request: invalid reqline=$reqline\n";
if ($use_ssl) {
# This could be an http request when it should be https
$use_ssl = 0;
local $urlhost = $config{'musthost'} || $host;
$urlhost = "[".$urlhost."]" if (&check_ip6address($urlhost));
local $wantport = $port;
if ($wantport == 80 &&
&indexof(443, @listening_on_ports) >= 0) {
# Connection was to port 80, but since we are also
# accepting on port 443, redirect to that
$wantport = 443;
}
local $url = $wantport == 443 ? "https://$urlhost/"
: "https://$urlhost:$wantport/";
local $jsurl = $config{'musthost'} ?
$url :
"https://'+location.host+'";
local $jsredir = $config{'musthost'} ?
"location.href='$url'" :
"location.protocol='https:'";
$reqline = "GET / HTTP/1.1"; # Fake it for the log
&http_error(200, "Document follows",
"This web server is running in SSL mode. ".
"Trying to redirect to <a href='$url'>$url</a> instead ...".
"<script>".
"if (location.protocol != 'https:') {".
" document.querySelector('a').href='".$jsurl."';document.querySelector('a').innerText='".$jsurl."';".
"".$jsredir."".
"}".
"</script>",
0, 1);
}
elsif (ord(substr($reqline, 0, 1)) == 128 && !$use_ssl) {
# This could be an https request when it should be http ..
# need to fake a HTTP response
eval <<'EOF';
use Net::SSLeay;
eval "Net::SSLeay::SSLeay_add_ssl_algorithms()";
eval "Net::SSLeay::load_error_strings()";
$ssl_ctx = Net::SSLeay::CTX_new();
Net::SSLeay::CTX_use_RSAPrivateKey_file(
$ssl_ctx, $config{'keyfile'},
&Net::SSLeay::FILETYPE_PEM);
Net::SSLeay::CTX_use_certificate_file(
$ssl_ctx,
$config{'certfile'} || $config{'keyfile'},
&Net::SSLeay::FILETYPE_PEM);
$ssl_con = Net::SSLeay::new($ssl_ctx);
pipe(SSLr, SSLw);
if (!fork()) {
close(SSLr);
select(SSLw); $| = 1; select(STDOUT);
print SSLw $origreqline;
local $buf;
while(sysread(SOCK, $buf, 1) > 0) {
print SSLw $buf;
}
close(SOCK);
exit;
}
close(SSLw);
Net::SSLeay::set_wfd($ssl_con, fileno(SOCK));
Net::SSLeay::set_rfd($ssl_con, fileno(SSLr));
Net::SSLeay::accept($ssl_con) || die "accept() failed";
$use_ssl = 1;
local $url = $config{'musthost'} ?
"https://$config{'musthost'}:$port/" :
"https://$host:$port/";
$reqline = "GET / HTTP/1.1"; # Fake it for the log
&http_error(200, "Bad Request", "This web server is not running in SSL mode. Try the URL <a href='$url'>$url</a> instead.", 0, 1);
EOF
if ($@) {
&http_error(400, "Bad Request");
}
}
else {
&http_error(400, "Bad Request");
}
elsif ($reqline && $reqline !~ /^(\S+)\s+(.*)\s+HTTP\/1\..$/) {
&http_error(400, "Bad Request");
return 0;
}
$method = $1;
$request_uri = $page = $2;
@@ -1520,7 +1496,8 @@ if (defined($header{'host'})) {
else {
$host = $header{'host'};
}
if ($config{'musthost'} && $host ne $config{'musthost'}) {
if ($config{'musthost'} && $host ne $config{'musthost'} &&
!$config{'musthost_redirect'}) {
# Disallowed hostname used
&http_error(400, "Invalid HTTP hostname");
}
@@ -1543,6 +1520,22 @@ if ($config{'redirect_prefix'}) {
}
$prot = $ssl ? "https" : "http";
# Redirect to the configured "musthost", if "musthost_redirect" is set, rather
# than showing an error
if ($config{'musthost'} && $host ne $config{'musthost'} &&
$config{'musthost_redirect'}) {
&write_data("HTTP/1.0 302 Moved Temporarily\r\n");
&write_data("Date: $datestr\r\n");
&write_data("Server: @{[&server_info()]}\r\n");
&write_data("Location: $prot://$config{'musthost'}:$redirport\r\n");
&write_keep_alive(0);
&write_data("\r\n");
&log_request($loghost, $authuser, $reqline, 302, 0) if $reqline;
shutdown(SOCK, 1);
close(SOCK);
return;
}
undef(%in);
if ($page =~ /^([^\?]+)\?(.*)$/) {
# There is some query string information
@@ -1818,7 +1811,7 @@ if ($config{'session'} && !$deny_authentication &&
&http_error(500, "Invalid session",
"Session ID contains invalid characters");
}
print $PASSINw "verify $sid 0 $acptip\n";
print $PASSINw "verify $sid $acptip 1\n";
<$PASSOUTr> =~ /^(\d+)\s+(\S+)/;
if ($1 != 2) {
&http_error(500, "Invalid session",
@@ -1989,9 +1982,7 @@ if ($config{'session'} && !$validated) {
local $cookie = $header{'cookie'};
while($cookie =~ s/(^|\s|;)$sidname=([a-f0-9]+)//) {
$session_id = $2;
local $notimeout =
$in{'webmin_notimeout'} ? 1 : 0;
print $PASSINw "verify $session_id $notimeout $acptip\n";
print $PASSINw "verify $session_id $acptip 1\n";
<$PASSOUTr> =~ /(\d+)\s+(\S+)/;
if ($1 == 2) {
# Valid session continuation
@@ -4781,6 +4772,10 @@ if ($config{'ssl_honorcipherorder'}) {
&Net::SSLeay::OP_CIPHER_SERVER_PREFERENCE)';
}
# Disable TLS renegotiation when possible, OpenSSL >= 1.1.0h
eval 'Net::SSLeay::CTX_set_options($ssl_ctx,
&Net::SSLeay::OP_NO_RENEGOTIATION)';
return { 'keyfile' => $keyfile,
'keytime' => $kst[9],
'certfile' => $certfile,
@@ -5508,14 +5503,7 @@ foreach my $pe (split(/\t+/, $config{'expires_paths'})) {
}
# Re-open debug log
close(DEBUG);
if ($config{'debuglog'}) {
open(DEBUG, ">>$config{'debuglog'}");
select(DEBUG); $| = 1; select(STDOUT);
}
else {
open(DEBUG, ">/dev/null");
}
&open_debug_to_log();
# Reset cache of sudo checks
undef(%sudocache);
@@ -5886,23 +5874,26 @@ while(1) {
vec($rmask, fileno(SOCK), 1) = 1;
my $sel = select($rmask, undef, undef, 10);
my ($buf, $ok);
my $uptime = 0;
if (vec($rmask, fileno($fh), 1)) {
# Got something from the websockets backend
$ok = sysread($fh, $buf, 1024);
last if ($ok <= 0); # Backend has closed
&write_data($buf);
$uptime = 1;
}
if (vec($rmask, fileno(SOCK), 1)) {
# Got something from the browser
$buf = &read_data(1024);
last if (!defined($buf) || length($buf) == 0);
syswrite($fh, $buf, length($buf)) || last;
$uptime = 1;
}
my $now = time();
if ($now - $last_session_check_time > 10) {
# Re-validate the browser session every 10 seconds
print DEBUG "verifying websockets session $session_id\n";
print $PASSINw "verify $session_id 0 $acptip\n";
print $PASSINw "verify $session_id $acptip $uptime\n";
<$PASSOUTr> =~ /(\d+)\s+(\S+)/;
if ($1 != 2) {
print DEBUG "session $session_id has expired!\n";
@@ -6664,6 +6655,7 @@ else {
sub redirect_stderr_to_log
{
if ($config{'errorlog'} ne '-') {
close(STDERR);
open(STDERR, ">>$config{'errorlog'}") ||
die "failed to open $config{'errorlog'} : $!";
if ($config{'logperms'}) {
@@ -6673,6 +6665,23 @@ if ($config{'errorlog'} ne '-') {
select(STDERR); $| = 1; select(STDOUT);
}
# open_debug_to_log([msg])
# Direct the DEBUG file handle somewhere
sub open_debug_to_log
{
my ($msg) = @_;
close(DEBUG);
if ($config{'debuglog'}) {
open(DEBUG, ">>$config{'debuglog'}");
chmod(0700, $config{'debuglog'});
select(DEBUG); $| = 1; select(STDOUT);
print DEBUG $msg if ($msg);
}
else {
open(DEBUG, ">/dev/null");
}
}
# should_gzip_file(filename)
# Returns 1 if some path should be gzipped
sub should_gzip_file

1
mod_core_list.txt Normal file
View File

@@ -0,0 +1 @@
acl apache authentic-theme backup-config bind8 change-user cron dovecot fail2ban fdisk filemin firewalld fsdump gray-theme htaccess-htpasswd init logrotate logviewer lvm mailboxes mailcap mount mysql net package-updates passwd phpini postfix proc procmail proftpd quota servers software spam sshd status system-status time updown useradmin usermin webmin webmincron webminlog xterm

View File

@@ -1 +0,0 @@
cron dfsadmin exports inetd init mount samba useradmin fdisk format proc webmin quota software pap acl apache lpadmin bind8 sendmail squid bsdexports hpuxexports net dhcpd custom servers time syslog mysql man inittab raid postfix webminlog postgresql xinetd status cpan pam nis shell fetchmail passwd at proftpd sshd heartbeat cluster-software cluster-useradmin qmailadmin stunnel usermin fsdump lvm procmail cluster-webmin firewall sgiexports openslp webalizer shorewall adsl-client updown ppp-client pptp-server pptp-client ipsec ldap-useradmin change-user cluster-shell cluster-cron spam htaccess-htpasswd logrotate cluster-passwd mailboxes ipfw sarg bandwidth cluster-copy backup-config smart-status idmapd krb5 smf ipfilter rbac tunnel zones cluster-usermin dovecot syslog-ng mailcap ldap-client phpini filter bacula-backup ldap-server exim tcpwrappers package-updates system-status webmincron shorewall6 iscsi-server iscsi-client gray-theme iscsi-target iscsi-tgtd bsdfdisk fail2ban authentic-theme firewalld filemin firewall6 logviewer xterm

1
mod_full_list.txt Normal file
View File

@@ -0,0 +1 @@
acl adsl-client apache at authentic-theme backup-config bacula-backup bandwidth bind8 bsdexports bsdfdisk change-user cluster-copy cluster-cron cluster-passwd cluster-shell cluster-software cluster-useradmin cluster-usermin cluster-webmin cpan cron custom dfsadmin dhcpd dovecot exim exports fail2ban fdisk fetchmail filemin filter firewall firewall6 firewalld format fsdump gray-theme heartbeat hpuxexports htaccess-htpasswd idmapd inetd init inittab ipfilter ipfw ipsec iscsi-client iscsi-server iscsi-target iscsi-tgtd krb5 ldap-client ldap-server ldap-useradmin logrotate logviewer lpadmin lvm mailboxes mailcap man mount mysql net nis openslp package-updates pam pap passwd phpini postfix postgresql ppp-client pptp-client pptp-server proc procmail proftpd qmailadmin quota raid rbac samba sarg sendmail servers sgiexports shell shorewall shorewall6 smart-status smf software spam squid sshd status stunnel syslog syslog-ng system-status tcpwrappers time tunnel updown useradmin usermin webalizer webmin webmincron webminlog xinetd xterm zones

1
mod_minimal_list.txt Normal file
View File

@@ -0,0 +1 @@
acl cron init inittab man proc servers system-status webmin webmincron webminlog

View File

@@ -0,0 +1,24 @@
access=*: *
add_mode=1
blob_mode=0
date_subs=0
login=root
max_dbs=50
max_text=1000
my_cnf=/etc/mysql/my.cnf
mysql=/usr/bin/mariadb
mysql_data=/var/lib/mysql
mysql_libs=
mysqladmin=/usr/bin/mariadb-admin
mysqldump=/usr/bin/mariadb-dump
mysqlimport=/usr/bin/mariadb-import
mysqlshow=/usr/bin/mariadb-show
nodbi=0
nopwd=0
passwd_mode=0
perpage=25
ssl=0
start_cmd=systemctl start mariadb
stop_cmd=systemctl stop mariadb
style=1
webmin_subs=0

View File

@@ -19,7 +19,7 @@ $limitsql = &get_search_limit(\%in);
($sortsql, $sorthids, $sortargs) = &get_search_sort(\%in);
$d = &execute_sql($in{'db'},
"select * from ".&quote_table($in{'table'})." $search $limitsql $sortsql");
"select * from ".&quote_table($in{'table'})." $search $sortsql $limitsql");
# Work out the MIME type based on the data
$data = $d->{'data'}->[$in{'row'}]->[$in{'col'}];

View File

@@ -50,9 +50,10 @@ print &ui_table_row($text{'cnf_stor'},
'NDB', 'ARCHIVE', 'CSV',
'BLACKHOLE' ], 1, 0, 1));
my $ifpt_def_off = &get_innodb_file_per_table_default() ? 0 : 1;
$fpt = &find_value("innodb_file_per_table", $mems);
print &ui_table_row($text{'cnf_fpt'},
&ui_yesno_radio("fpt", $fpt));
&ui_yesno_radio("fpt", $fpt // $ifpt_def_off));
$ilt = &find_value("innodb_lock_wait_timeout", $mems);
print &ui_table_row($text{'cnf_ilt'},

View File

@@ -68,8 +68,9 @@ my $lock_supported = &get_account_lock_support();
# Old way for checking account locking
my $locked = $u->[$fieldmap{'account_locked'}] eq 'Y';
# New account locking check
if (!exists($fieldmap{'account_locked'}) ||
!defined($u->[$fieldmap{'account_locked'}])) {
if (!$in{'new'} &&
(!exists($fieldmap{'account_locked'}) ||
!defined($u->[$fieldmap{'account_locked'}]))) {
$locked = &get_account_lock_status($u->[1], $u->[0]);
}
print &ui_table_row($text{'user_pass'},

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