Compare commits

..

191 Commits
1.810 ... 1.830

Author SHA1 Message Date
Jamie Cameron
fecfdb2f2b I already bumped the version 2016-12-27 13:33:20 -08:00
Jamie Cameron
b091ba221c New version bump 2016-12-27 11:23:03 -08:00
Jamie Cameron
1fd2f398ad Add and use a function to save the MySQL version number 2016-12-26 21:11:11 -08:00
Jamie Cameron
ad381d1447 Differentiate remote and local mysql versions 2016-12-24 22:33:26 -08:00
Jamie Cameron
1004cedd4e Merge branch 'master' of git@github.com:webmin/webmin 2016-12-22 21:38:48 -08:00
Jamie Cameron
837d98d6bc Fix case where a non-root user is downloading in the browser https://virtualmin.com/node/44972 2016-12-22 21:36:36 -08:00
Joe Cooper
f16522157d Update README 2016-12-22 20:26:17 -08:00
Jamie Cameron
ca071daec2 New version bump 2016-12-21 14:47:19 -08:00
Jamie Cameron
90fa9332e9 Fix perl typo 2016-12-21 14:31:18 -08:00
Jamie Cameron
b6984eb5fd New Debian and Mint versions 2016-12-20 17:26:06 -08:00
Jamie Cameron
dc5a5fb4e7 Make challenge file world-readable, to ensure Apache can read it 2016-12-20 09:00:20 -08:00
Jamie Cameron
05ebd304fe Filter out duplicate updates 2016-12-18 11:07:00 -08:00
Jamie Cameron
dc69277ab3 German translation updates from Raymond Vetter 2016-12-18 10:36:28 -08:00
Jamie Cameron
7fd09d1a95 German translation updates from Raymond Vetter 2016-12-18 10:36:22 -08:00
Jamie Cameron
7dae254be4 Fix perl warning 2016-12-16 21:46:56 -08:00
Jamie Cameron
ce6b5fed71 German translation update from Abrax 2016-12-14 22:00:44 -08:00
Jamie Cameron
62049ffa47 Expand supported Squid versions 2016-12-14 09:36:23 -08:00
Jamie Cameron
2e6308372d Don't prompt for password 2016-12-11 19:54:47 -08:00
Jamie Cameron
e87f8ef1f5 Handle new format diretives for the root DN and password 2016-12-11 11:08:48 -08:00
Jamie Cameron
12b3e98bec Shell script needs to start with /bin/sh 2016-12-10 22:44:12 -08:00
Jamie Cameron
319c3c1f42 Fix inconsistent quoting https://github.com/webmin/webmin/issues/470 2016-12-09 10:01:04 -08:00
Jamie Cameron
6a7c775d83 Filter out any JS in action descriptions 2016-12-06 21:09:56 -08:00
Jamie Cameron
e43ec7e4c0 HTML escape record values 2016-12-06 20:35:06 -08:00
Jamie Cameron
3bee204db2 Fix permissions check for dleting zones, that was breaking access to zones in views https://sourceforge.net/p/webadmin/bugs/4853/ 2016-12-06 15:18:24 -08:00
Jamie Cameron
96c6793301 Don't ignore selection for files that start with 0 https://www.virtualmin.com/node/44669 2016-12-06 07:46:28 -08:00
Jamie Cameron
f786638c29 If a command is already in the previous list, move it to the top https://github.com/webmin/webmin/issues/469 2016-12-05 14:50:18 -08:00
Jamie Cameron
bb2f90ee5b Disallow backslash in passwords https://virtualmin.com/node/44451 2016-12-04 10:25:48 -08:00
Jamie Cameron
6676f6c660 Merge branch 'master' of git@github.com:webmin/webmin 2016-12-04 10:13:43 -08:00
Jamie Cameron
0e38b9e7a0 Cert file could be a link, so copy the target rather than the link 2016-12-04 10:03:11 -08:00
Jamie Cameron
afa7f0d82b Merge pull request #467 from qooob/master
Unambiguous table header
2016-12-02 14:22:05 -08:00
Ilia Rostovtsev
bf7873b3e0 Unambiguous table header 2016-12-02 09:43:21 +03:00
Ilia Rostovtsev
e1fa75f314 Unambiguous table header 2016-12-02 09:43:01 +03:00
Ilia Rostovtsev
8aa6cc1c08 Unambiguous table header 2016-12-02 09:42:48 +03:00
Ilia Rostovtsev
f06acc1a92 Unambiguous table header 2016-12-02 09:42:33 +03:00
Ilia Rostovtsev
675e0f032a Unambiguous table header 2016-12-02 09:42:07 +03:00
Ilia Rostovtsev
917ff95a90 Unambiguous table header 2016-12-02 09:41:24 +03:00
Ilia Rostovtsev
c415c46b37 Unambiguous table header 2016-12-02 09:40:36 +03:00
Jamie Cameron
e5760f78ac Drop two old themes from the standard package 2016-11-30 17:16:24 -08:00
Jamie Cameron
88907f3079 Show previously used names if any https://www.virtualmin.com/node/41951 2016-11-30 15:52:33 -08:00
Jamie Cameron
f700928156 Merge branch 'master' of git@github.com:webmin/webmin 2016-11-30 15:50:39 -08:00
Jamie Cameron
149c4aad4f Some records don't have values (like ttl) https://sourceforge.net/p/webadmin/bugs/4851/ 2016-11-30 15:48:43 -08:00
Jamie Cameron
9bc5766fa1 Merge pull request #465 from qooob/master
SeLinux/attributes listing and control - Security strengthening/2
2016-11-30 13:51:41 -08:00
Jamie Cameron
c36f4e2af1 Merge pull request #466 from qooob/patch-1
`stat()` -> `lstat()` seems better
2016-11-30 13:21:04 -08:00
Ilia Rostovtsev
3b66f444f8 stat() -> lstat() seems better 2016-11-30 15:00:57 +03:00
Ilia Rostovtsev
75700873ff SeLinux/attributes listing and control - Security strengthening/2 2016-11-30 13:48:46 +03:00
Ilia Rostovtsev
86dfb7f686 SeLinux/attributes listing and control - Security strengthening/2 2016-11-30 13:47:06 +03:00
Jamie Cameron
47b26ce53e Merge pull request #464 from qooob/master
SeLinux/attributes listing and control - Security strengthening
2016-11-29 14:00:16 -08:00
Ilia Rostovtsev
28c5b02c4a SeLinux/attributes listing and control - Security strengthening 2016-11-30 00:13:36 +03:00
Jamie Cameron
5c8540a832 Merge pull request #463 from qooob/master
SeLinux/attributes listing and control
2016-11-29 10:06:17 -08:00
Ilia Rostovtsev
5835afd971 SeLinux/attributes listing and control 2016-11-29 16:44:02 +03:00
Ilia Rostovtsev
ff0ba4822d SeLinux/attributes listing and control 2016-11-29 16:43:32 +03:00
Ilia Rostovtsev
df1334f3af SeLinux/attributes listing and control 2016-11-29 16:42:36 +03:00
Ilia Rostovtsev
7621053e6c SeLinux/attributes listing and control 2016-11-29 16:42:17 +03:00
Ilia Rostovtsev
21b431f59b SeLinux/attributes listing and control 2016-11-29 16:41:52 +03:00
Ilia Rostovtsev
5a47843eb6 SeLinux/attributes listing and control 2016-11-29 16:40:56 +03:00
Ilia Rostovtsev
cde06ff828 SeLinux/attributes listing and control 2016-11-29 16:40:17 +03:00
Ilia Rostovtsev
d438f002a9 SeLinux/attributes listing and control 2016-11-29 16:39:43 +03:00
Ilia Rostovtsev
aa0f31c93d SeLinux/attributes listing and control 2016-11-29 16:39:22 +03:00
Ilia Rostovtsev
0e52919e83 SeLinux/attributes listing and control 2016-11-29 16:39:02 +03:00
Ilia Rostovtsev
fdb811e1a6 SeLinux/attributes listing and control 2016-11-29 16:38:43 +03:00
Ilia Rostovtsev
d653841a1d SeLinux/attributes listing and control 2016-11-29 16:38:06 +03:00
Ilia Rostovtsev
1957217e75 SeLinux/attributes listing and control 2016-11-29 16:37:38 +03:00
Ilia Rostovtsev
cca0d50a6b SeLinux/attributes listing and control 2016-11-29 16:36:58 +03:00
Ilia Rostovtsev
dffc6c10b2 SeLinux/attributes listing and control 2016-11-29 16:36:24 +03:00
Ilia Rostovtsev
043690aee8 SeLinux/attributes listing and control 2016-11-29 16:36:11 +03:00
Ilia Rostovtsev
c03e3a5c97 SeLinux/attributes listing and control 2016-11-29 16:35:07 +03:00
Ilia Rostovtsev
2c94d548f2 SeLinux/attributes listing and control 2016-11-29 16:33:02 +03:00
Ilia Rostovtsev
0df9e25be2 SeLinux/attributes listing and control 2016-11-29 16:32:43 +03:00
Ilia Rostovtsev
ed66605896 SeLinux/attributes listing and control 2016-11-29 16:32:24 +03:00
Ilia Rostovtsev
70b534ef3c SeLinux/attributes listing and control 2016-11-29 16:31:57 +03:00
Ilia Rostovtsev
b085b2142f SeLinux/attributes listing and control 2016-11-29 16:31:02 +03:00
Jamie Cameron
c51b7ca4fd Try both upper and lower case P flags https://www.virtualmin.com/node/44318 2016-11-28 15:01:32 -08:00
Jamie Cameron
3e592861d4 Merge branch 'master' of git@github.com:webmin/webmin 2016-11-26 17:22:35 -08:00
Jamie Cameron
f505abccd5 Fix perl warning by failing fast if directory doesn't exist https://sourceforge.net/p/webadmin/bugs/4849/ 2016-11-26 17:15:54 -08:00
Jamie Cameron
592d47067a Merge pull request #460 from qooob/patch-39
Typo
2016-11-25 09:47:05 -08:00
Ilia Rostovtsev
37c7f1aaa7 Typo 2016-11-25 15:16:38 +03:00
Jamie Cameron
2b7688d445 Trying to limit the level of recursion when parsing turns out to be infinitely expensive :-( 2016-11-18 15:14:49 -08:00
Jamie Cameron
a508348cca Make missing perl module clearer 2016-11-18 13:42:19 -08:00
Jamie Cameron
84de87f7ed Take fixed version into account when checking for a new version 2016-11-14 20:34:34 -08:00
Jamie Cameron
c8ef4468c3 Stop including the X1 let's encrypt cert https://www.virtualmin.com/node/43460 2016-11-11 18:46:43 -08:00
Jamie Cameron
79cc63c016 / is not an actual chroot 2016-11-10 11:25:16 -08:00
Jamie Cameron
c0a72633e8 Add support for pre-theme-change functions as well 2016-11-10 10:12:59 -08:00
Jamie Cameron
f3c063644d theme pre/post functions have to be exported 2016-11-10 10:04:25 -08:00
Jamie Cameron
cda820a418 MySQL 5.7.16 doesn't support the hosts table https://www.virtualmin.com/node/43131 2016-11-09 20:56:08 -08:00
Jamie Cameron
c38725d371 Load theme library first, so tha the old theme's functions are available 2016-11-04 08:35:21 -07:00
Jamie Cameron
9af0e28e02 Suppress message when backing up to browser https://www.virtualmin.com/node/43291 2016-11-02 22:09:52 -07:00
Jamie Cameron
d8a2a373e4 Add post-theme-change function 2016-11-01 20:39:06 -07:00
Jamie Cameron
d03f6fdc67 Support views without needing to login to MySQL 2016-10-30 22:43:49 -07:00
Jamie Cameron
1e3b845bf1 Deal with invalid keys without crashing 2016-10-30 22:19:45 -07:00
Jamie Cameron
eab1118184 Fix saving of groups https://sourceforge.net/p/webadmin/bugs/4844/ 2016-10-30 20:26:30 -07:00
Jamie Cameron
a19b85d570 Limit level of recursion possible for the most expensive regexp https://www.virtualmin.com/node/43153 2016-10-28 16:53:59 -07:00
Jamie Cameron
0a08ee52ea mysql 5.5+ always supports views 2016-10-27 23:18:35 -07:00
Jamie Cameron
f34ca656a5 Fix another use of nocreateuser permission https://github.com/webmin/webmin/issues/449 2016-10-26 22:03:51 -07:00
Jamie Cameron
0ca5b18938 Disallow colon in default value https://sourceforge.net/p/webadmin/bugs/4839/ 2016-10-26 21:44:03 -07:00
Jamie Cameron
a85db57cdd Merge branch 'master' of git@github.com:webmin/webmin 2016-10-24 17:17:01 -07:00
Jamie Cameron
f8f13738a1 Fix perl warning https://www.virtualmin.com/node/39161 2016-10-24 17:09:19 -07:00
Jamie Cameron
85ce8657f7 Merge pull request #446 from augustr/fix-bind8-lib-comparison
Fix bind version comparison in bind8-lib
2016-10-22 16:39:41 -07:00
August Rydberg
07abd58e8b Fix bind version comparison in bind8-lib 2016-10-22 09:49:37 +02:00
Jamie Cameron
475cc4fbdf Strip out unsafe HTML from error messages 2016-10-21 15:46:23 -07:00
Jamie Cameron
bb0312469e Support all NFS security options https://github.com/webmin/webmin/issues/443 2016-10-19 22:03:28 -07:00
Jamie Cameron
095879911f MAC addresses must have a :, - or . in them 2016-10-19 21:27:20 -07:00
Jamie Cameron
99afee45aa If host entered is 12 hex bytes in any format, convert to standard format 2016-10-19 21:25:15 -07:00
Jamie Cameron
cf956129cb German translation updates from Raymond Vetter 2016-10-18 12:37:10 -07:00
Jamie Cameron
078131f4f6 German translation updates from Raymond Vetter 2016-10-18 12:37:02 -07:00
Jamie Cameron
04f2b51bab Fix some perl warnings https://sourceforge.net/p/webadmin/bugs/4837/ 2016-10-17 21:09:04 -07:00
Jamie Cameron
2a65b999ca source line is not part of an interface https://www.virtualmin.com/node/43038 2016-10-16 15:22:59 -07:00
Jamie Cameron
5486730fd6 Fix incorrect field name 2016-10-16 11:33:47 -07:00
Jamie Cameron
f7f3e3b5ac Show the TLSA numeric codes 2016-10-16 11:18:50 -07:00
Jamie Cameron
c3f86c7f39 Strip comments from public key text 2016-10-16 10:48:11 -07:00
Jamie Cameron
ac7f52d6d1 forgotten checkin for sms subject update 2016-10-14 16:56:25 -07:00
Jamie Cameron
15e2f4a114 Remove the .service suffix https://github.com/webmin/webmin/issues/430 2016-10-14 16:54:07 -07:00
Jamie Cameron
338f801be4 Don't try to clear out file that doesn't exist 2016-10-14 12:29:37 -07:00
Jamie Cameron
b6189c6a43 dev version bump 2016-10-14 11:26:37 -07:00
Jamie Cameron
c9345028d7 Allow setting of subject line for SMS emails 2016-10-14 11:08:00 -07:00
Jamie Cameron
56270624d1 Don't assume that a specific file was edited https://www.virtualmin.com/node/42988 2016-10-12 20:45:54 -07:00
Jamie Cameron
ab561465ba Allow multiple masquerade IPs https://github.com/webmin/webmin/issues/438 2016-10-11 18:01:39 -07:00
Jamie Cameron
b2511a047c In new packages mode, don't show the whole list by default 2016-10-10 15:56:27 -07:00
Jamie Cameron
5e89e16f06 PFS support in usermin too 2016-10-09 22:07:16 -07:00
Jamie Cameron
0bf336d761 Fix PFS support by creating and using DH params file https://github.com/webmin/webmin/issues/413 2016-10-09 21:56:23 -07:00
Jamie Cameron
42157fdfed Default to using the built-in lets encrypt client, because the official client has an unreliable output format 2016-10-09 10:44:14 -07:00
Jamie Cameron
7ee7ed19f4 Merge pull request #437 from deserted/master
increase specificity of regex to avoid problems with new output from certbot/letsencrypt client
2016-10-09 10:37:36 -07:00
Tim Allingham
a04eb85879 increase specificity of regex to avoid problems with new output from certbot/letsencrypt client 2016-10-09 21:00:12 +11:00
Jamie Cameron
0353111336 Enable IPv6 by default for new installs https://sourceforge.net/p/webadmin/bugs/4824/ 2016-10-05 16:43:54 -07:00
Jamie Cameron
b35b58cb94 Initialize a forgotten var that causes zones nested under views to break https://github.com/webmin/webmin/issues/411 2016-10-04 16:33:55 -07:00
Jamie Cameron
f7337c7f27 Clear out JS file 2016-10-03 09:03:28 -07:00
Jamie Cameron
d2b43d2eaa TLSA record support 2016-10-02 20:30:36 -07:00
Jamie Cameron
7ff9e6501a Fix ordering of number-string-number version check, as it needs to come before number-string 2016-10-02 11:31:43 -07:00
Jamie Cameron
18bae5be08 Use a separate mode input to determine whether the system time, hardware time or NTP time are being set. This is needed because authentic theme changes the values of submit buttons 2016-10-02 00:01:29 -07:00
Jamie Cameron
b6bc89aa31 German translation updates from Raymond Vetter 2016-10-01 15:05:33 -07:00
Jamie Cameron
8c8afc0cbb Fix missing space 2016-10-01 15:04:50 -07:00
Jamie Cameron
e8120afc9e New version bump 2016-10-01 15:02:38 -07:00
Jamie Cameron
ce3074ad47 Add missing slash 2016-10-01 14:57:41 -07:00
Jamie Cameron
27ea3f50c0 Fix comparison of versions like 5foo7 and 5foo10 https://github.com/webmin/webmin/issues/282 2016-10-01 10:37:45 -07:00
Jamie Cameron
ac77da0e75 Merge branch 'master' of git@github.com:webmin/webmin 2016-09-30 15:36:59 -07:00
Jamie Cameron
8ab998b123 Fix creation of new actions 2016-09-30 15:36:47 -07:00
Jamie Cameron
a40052a3f0 Merge pull request #432 from cornec81/master
firewall6 modules changes
2016-09-30 14:04:03 -07:00
Jamie Cameron
c6cd892f15 Fail fast if file can't be opened 2016-09-30 14:01:44 -07:00
Corne Cornelius
12b0364e62 silly perl path fix 2016-09-30 20:03:32 +00:00
Corne Cornelius
0883226098 firewall6: bug fixes and pager 2016-09-30 19:57:44 +00:00
Jamie Cameron
7208412de2 let's encrypt output can be a symlink, so always de-reference it https://www.virtualmin.com/node/42419 2016-09-29 16:28:54 -07:00
Jamie Cameron
ceae4b5228 LDAP client check doesn't handle new-style nslcd format https://www.virtualmin.com/node/42113 2016-09-25 09:40:12 -07:00
Jamie Cameron
f308101805 Also use list-unit-files to find disabled units https://github.com/webmin/webmin/issues/430 2016-09-24 15:55:43 -07:00
Jamie Cameron
371d2b008f ATA mode no longer needs to be on by default, as it breaks on some drives https://sourceforge.net/p/webadmin/bugs/4821/ 2016-09-19 19:57:34 -07:00
Jamie Cameron
5f39cfdd39 Properly deal with the case where a directive is missing https://www.virtualmin.com/node/41676 2016-09-19 17:55:15 -07:00
Jamie Cameron
53f087cafa Fix protocol check https://sourceforge.net/p/webadmin/bugs/4820/ 2016-09-18 16:02:39 -07:00
Jamie Cameron
481d2b6d4b German translation updates from Raymond Vetter 2016-09-17 16:21:11 -07:00
Jamie Cameron
e3192f2f19 German translation updates from Raymond Vetter 2016-09-17 16:21:04 -07:00
Jamie Cameron
186d49c1a0 Option has been renamed in IPv6 https://sourceforge.net/p/webadmin/bugs/4819/ 2016-09-17 10:23:58 -07:00
Jamie Cameron
003424a60e Support new format comments https://sourceforge.net/p/webadmin/bugs/4818/ 2016-09-16 21:15:54 -07:00
Jamie Cameron
c2657aab8a Clear zone list on each iteration https://github.com/webmin/webmin/issues/411 2016-09-15 20:53:38 -07:00
Jamie Cameron
3cceb09daa Upgrade form is no longer GET https://sourceforge.net/p/webadmin/usermin-bugs/455/ 2016-09-12 21:34:12 -07:00
Jamie Cameron
9e57a7df51 German translation updates from Raymond Vetter 2016-09-12 20:24:00 -07:00
Jamie Cameron
4cfb984694 German translation updates from Raymond Vetter 2016-09-12 20:24:00 -07:00
Jamie Cameron
220897472f Fix typo 2016-09-12 20:21:43 -07:00
Jamie Cameron
dc69374aaa let's encrypt cert size option 2016-09-11 09:49:18 -07:00
Jamie Cameron
ac4d68f2ce Close HTTP connection on failure, to avoid dangling file handles https://www.virtualmin.com/node/41967 2016-09-09 16:25:11 -07:00
Jamie Cameron
202d672855 dev version bump 2016-09-08 21:44:19 -07:00
Jamie Cameron
2f5ee3eb33 Handle gentoo's apache cofnig check output https://www.virtualmin.com/node/41961 2016-09-08 20:04:49 -07:00
Jamie Cameron
b2d4380577 Add depenency on time::local, so that on systems like Fedora 24 the needed Perl modules get installed https://github.com/webmin/webmin/issues/405 2016-09-06 21:12:36 -07:00
Jamie Cameron
d93ae142f2 Allow password reading from stdin 2016-08-31 22:03:57 -07:00
Jamie Cameron
c8cebbb4b9 German translation updates from Raymond Vetter 2016-08-29 20:40:41 -07:00
Jamie Cameron
db8407ab09 German translation updates from Raymond Vetter 2016-08-29 20:40:35 -07:00
Jamie Cameron
ebfcf159c7 Don't replace a new update with an older one in the same cycle https://www.virtualmin.com/node/41721 2016-08-27 17:48:31 -07:00
Jamie Cameron
8748d785b4 German translation updates from Raymond Vetter 2016-08-27 10:31:50 -07:00
Jamie Cameron
25d31738ec German translation updates from Raymond Vetter 2016-08-27 10:31:45 -07:00
Jamie Cameron
499fba0b8c Forgotten checkin from previous work to validation options files 2016-08-27 09:09:30 -07:00
Jamie Cameron
00bd87ae86 Download all the Let's Encrypt CA files 2016-08-27 09:07:21 -07:00
Jamie Cameron
2bf3dcbf38 Catalan update from Jaume Badiella 2016-08-27 09:06:01 -07:00
Jamie Cameron
6586126d6b Catalan update from Jaume Badiella 2016-08-27 09:05:13 -07:00
Jamie Cameron
8b358c438d Fix default also notify field https://www.virtualmin.com/node/41824 2016-08-26 23:19:08 -07:00
Jamie Cameron
cb481287ac Force stop before starting, just in case the init system thinks we're already started 2016-08-24 21:45:21 -07:00
Jamie Cameron
7e6982a0cf Use title from clone, if any 2016-08-24 21:01:01 -07:00
Jamie Cameron
700afdb0cc Fix perl warning 2016-08-24 20:30:39 -07:00
Jamie Cameron
000405b749 Skip fuse filesystemss 2016-08-23 21:41:39 -07:00
Jamie Cameron
a14864e932 Turkish translation from Melih akpınar 2016-08-21 20:43:47 -07:00
Jamie Cameron
36048fe4cd Option to download mysql backup 2016-08-20 18:46:34 -07:00
Jamie Cameron
e461576cd9 Merge pull request #415 from ymulleneers/patch-1
Copy jobs do not have destination tape
2016-08-19 22:26:05 -07:00
ymulleneers
7188abc556 Copy jobs do not have destination tapes
copy jobs do not have any destination tape (here called volume) (=> ? on the 7th or latest field)
example (spaces removed) : Full Backup 11 19-Aug-16 17:50 ykfdc1-Copyjob
2016-08-19 12:15:44 +02:00
Jamie Cameron
55fb44f34c open_execute_command doesn't work with file handle vars https://sourceforge.net/p/webadmin/bugs/4801/ 2016-08-17 20:12:57 -07:00
Jamie Cameron
b7bbeb457b Don't try to read missing zone file https://sourceforge.net/p/webadmin/bugs/4801/ 2016-08-15 20:29:18 -07:00
Jamie Cameron
e1e6fd43e0 Don't attempt to run named- v if not installed https://sourceforge.net/p/webadmin/bugs/4802/ 2016-08-15 09:01:35 -07:00
Jamie Cameron
46239c247f Fix IPv6 ICMP type option https://sourceforge.net/p/webadmin/bugs/4807/ 2016-08-14 17:36:01 -07:00
Jamie Cameron
22c8d8d041 Assume IPFW version 2, since it's been out for ages https://github.com/webmin/webmin/issues/410 2016-08-14 17:09:28 -07:00
Jamie Cameron
792b4d2bd7 Fix perl error 2016-08-14 11:41:33 -07:00
Jamie Cameron
031dd76538 Perl expects arrays to exist https://sourceforge.net/p/webadmin/bugs/4805/ 2016-08-14 10:22:30 -07:00
Jamie Cameron
74efe3465e Allow version override https://github.com/webmin/webmin/issues/410 2016-08-13 12:23:44 -07:00
Jamie Cameron
b08445e9c4 Fix perl error about use of unitialized arrays 2016-08-12 21:46:03 -07:00
Jamie Cameron
959adc098f Deal with invalid version file https://sourceforge.net/p/webadmin/bugs/4802/ 2016-08-11 20:35:49 -07:00
Jamie Cameron
54c7f75bf9 Some records don't have values https://sourceforge.net/p/webadmin/bugs/4800/ 2016-08-11 20:27:02 -07:00
Jamie Cameron
4dfaaaff09 Don't crash if there are no records of some type https://www.virtualmin.com/node/41676 2016-08-10 13:41:28 -07:00
Jamie Cameron
52180cea58 Work-around for chance that clients may call this API with a string list https://www.virtualmin.com/node/41674 2016-08-10 13:30:45 -07:00
294 changed files with 2109 additions and 1587 deletions

4
README
View File

@@ -1,4 +1,4 @@
Webmin Version 1.810
Webmin Version 1.830
--------------------
Webmin is a web-based interface for system administration for Unix.
Using any browser that supports tables and forms, you can setup user
@@ -49,6 +49,8 @@ commmand, the sc.exe command and the Win32::Daemon Perl module.
For more information, see http://www.webmin.com/
For documentation, see http://doxfer.webmin.com/
Jamie Cameron
jcameron@webmin.com

View File

@@ -27,7 +27,7 @@ push(@EXPORT, qw(&unique));
push(@EXPORT, qw($config_directory $var_directory $remote_error_handler %month_to_number_map %number_to_month_map $webmin_feedback_address $default_lang $default_charset $module_index_name $module_index_link %in $in @in $progress_callback_prefix $progress_callback_url $wait_for_debug $wait_for_input @matches $theme_no_table $webmin_logfile $pragma_no_cache));
# Functions defined in themes
push(@EXPORT, qw(&theme_post_save_domain &theme_post_save_domains &theme_post_save_server &theme_select_server &theme_select_domain &theme_post_save_folder &theme_post_change_modules &theme_address_button &theme_virtualmin_ui_rating_selector &theme_virtualmin_ui_show_cron_time &theme_virtualmin_ui_parse_cron_time &theme_virtualmin_ui_html_editor_bodytags &theme_virtualmin_ui_show_html_editor));
push(@EXPORT, qw(&theme_post_save_domain &theme_post_save_domains &theme_post_save_server &theme_select_server &theme_select_domain &theme_post_save_folder &theme_post_change_modules &theme_address_button &theme_virtualmin_ui_rating_selector &theme_virtualmin_ui_show_cron_time &theme_virtualmin_ui_parse_cron_time &theme_virtualmin_ui_html_editor_bodytags &theme_virtualmin_ui_show_html_editor &theme_post_change_theme &theme_pre_change_theme));
$called_from_webmin_core = 1;
do "web-lib.pl";

View File

@@ -146,6 +146,7 @@ delete_err=No s'ha pogut suprimir l'usuari
delete_eself=No et pots esborrar a tu mateix
delete_ecannot=No tens permís per suprimir usuaris
delete_euser=No tens permís per suprimir aquest usuari
delete_eanonuser=Aquest usuari s'està utilitzant per a l'accés del mòdul anònim
cert_title=Petició de Certificat
cert_issue=Emissió de Certificat
@@ -337,12 +338,20 @@ unix_header=Par
unix_utable=Usuaris Unix permesos
sessions_title=Sessions d'Entrada Actuals
sessions_desc=Les sessions d'entrada actuals de Webmin es llisten a sota. Per cancel·lar una sessió existent i forçar l'usuari a tornar a entrar, fes clic sobre l'ID de la sessió.
sessions_id=ID de sessió
sessions_user=Usuari Webmin
sessions_login=Ha entrat a
sessions_host=Adreça IP
sessions_lview=Visualitza els registres...
sessions_actions=Accions...
sessions_logouts=Mostra també les sessións desconnectades...
sessions_state=Estat
sessions_this=Aquesta entrada
sessions_in=Connectat
sessions_out=Desconnectat
sessions_kill=Desconnecta...
logins_title=Entrades recents a Webmin
hide_title=Amaga els Mòduls No Utilitzats
hide_desc=Els mòduls següents es trauran de la llista d'accés de mòduls de $1, ja que els seus corresponents servidors no estan instal·lats al sistema...

View File

@@ -41,3 +41,4 @@ desc_ms_MY=Pengguna Webmin
longdesc_de=Erstellt Webmin-Benutzer und konfiguriert, auf welche Module und Funktionen diese berechtigt sind, zugreifen.
longdesc_es=Crear usuarios de webmin y configurar a que modulos y caracteristicas pueden acceder.
longdesc_pl=Twórz u¿ytkowników Webmina i kontroluj, które modu³y i funkcje s± dla nich dostêpne.
longdesc_ca=Crea usuaris Webmin i configura quins mòduls i característiques tenen permès d'accedir.

View File

@@ -25,3 +25,4 @@ desc_no=ADSL klient
longdesc_ms_MY=Sediakan klien PPP dengan pakej RP-PPPoE.
desc_ms_MY=Klien ADSL
longdesc_pl=Konfigurowanie klienta PPTP z pakietem RP-PPPoE.
longdesc_ca=Configura un client PPP amb el paquet RP-PPPoE.

View File

@@ -9,3 +9,4 @@ desc_hu=Shell hozz
desc_ms_MY=Log masuk Teks
longdesc_ms_MY=Akses shell pada sistem anda tanpa menggunakan klien SSH secara berasingan dengan menggunaka Ajaxterm
longdesc_pl=Dostêp do pow³oki systemowej bez konieczno¶ci u¿ywania oddzielnego klienta SSH, u¿ywaj±c Ajaxterm
longdesc_ca=Accedeix a la shell del sistema sense necessitat d'un client SSH separat utilitzant Ajaxterm

View File

@@ -10,7 +10,7 @@ $access{'types'} eq '*' && $access{'virts'} eq '*' ||
$conf = &get_config();
@files = grep { -f $_ } &unique(map { $_->{'file'} } @$conf);
$in{'file'} = $files[0] if (!$in{'file'});
$in{'file'} = $files[0] if ($in{'file'} eq '');
print "<form action=allmanual_form.cgi>\n";
print "<input type=submit value='$text{'manual_file'}'>\n";
print "<select name=file>\n";

View File

@@ -1393,7 +1393,7 @@ if ($httpd_modules{'core'} >= 1.301) {
}
}
local $out = &backquote_command("$cmd 2>&1");
if ($out && $out !~ /syntax\s+ok/i) {
if ($out && $out !~ /(syntax|Checking).*\s+ok/i) {
return $out;
}
}

View File

@@ -20,7 +20,7 @@ httpd_version=Versi
apachectl_path=Camí de l'ordre apachectl,3,Cap
start_cmd=Ordre per iniciar Apache,3,Utilitza apachectl o inicia manualment
stop_cmd=Ordre per aturar Apache,3,Utilitza apachectl o mata el procés
,restart-Executa les ordres d'inici i aturada.
apply_cmd=Ordre per aplicar la configuració,10,-Utilitza apachectl o senyal HUP,restart-Executa els ordres d'inici i aturada
graceful_cmd=Ordre per rellegir la configuració,3,La mateixa que per aplicar-la
httpd_conf=Camí de httpd.conf o apache2.conf,3,Automàtic
srm_conf=Camí de srm.conf,3,Automàtic

View File

@@ -40,3 +40,4 @@ longdesc_ms_MY=Mengkonfigurasi hampir kesemua arahan Apache dan ciri-ciri yang a
desc_ms_MY=Pelayan Web Apache
longdesc_de=Konfiguriert fast alle Apache-Direktiven und Features.
longdesc_pl=Konfiguracja niemal wszystkich opcji i dyrektyw Apache.
longdesc_ca=Configura gairebé totes les directives característiques d'Apache.

View File

@@ -31,3 +31,4 @@ desc_no=Tidsplanlagte kommandoer
longdesc_ms_MY=Jadual pelaksanaan arahan one-off atau skrip.
desc_ms_MY=Perintah Berjadual
longdesc_pl=Harmonogram wykonywania poleceñ lub skryptów.
longdesc_ca=Planifica l'execució d'una ordre o script.

View File

@@ -29,3 +29,4 @@ desc_no=Sikkerhetskopier konfig.filer
longdesc_ms_MY=Lakukan salinan secara manual atau berjadual dan mengembalikan fail konfigurasi yang diuruskan oleh modul Webmin.
desc_ms_MY=Backup Fail konfigurasi
longdesc_pl=Rêczne lub zaplanowane tworzenie i przywracanie kopii zapasowych plików konfiguracyjnych modu³ów zarz±dzanych przez Webmina.
longdesc_ca=Porta a terme còpies de seguretat i restauracions manuals o planificades dels fitxers de configuració gestionats pels mòduls de Webmin.

View File

@@ -948,9 +948,11 @@ foreach my $l (split(/\r?\n/, $status)) {
elsif ($l =~ /^Running\s+Jobs/i) { $sect = 2; }
elsif ($l =~ /^Terminated\s+Jobs/i) { $sect = 3; }
if ($sect == 1 && $l =~ /^\s*(\S+)\s+(\S+)\s+(\d+)\s+(\S+\s+\S+(\s+\d+:\d+)?)\s+(\S+)\s+(\S+)\s*$/) {
if ($sect == 1 && $l =~ /^\s*(\S+)\s+(\S+)\s+(\d+)\s+(\S+\s+\S+(\s+\d+:\d+)?)\s+(\S+)\s+(\S+)?\s*$/) {
# Scheduled job, like
# Full Backup 10 27-Jun-14 17:30 ykfdc1-BackupJob wkly_1736
# copy jobs do not have any destination tape (=> ? on the latest field)
# Full Backup 11 19-Aug-16 17:50 ykfdc1-Copyjob
push(@sched, { 'level' => &full_level("$1"),
'type' => $2,
'pri' => $3,

View File

@@ -13,3 +13,4 @@ longdesc_ms_MY=Konfigurasi Bacula untuk melaksanakan salinan dan mengembalikan s
longdesc_de=Konfiguriert Bacula um Sicherungen zu erstellen und manuell oder nach Plan wiederherzustellen, f&#252;r eine oder viele Systeme.
longdesc_pl=Skonfiguruj Bacula do przeprowadzania kopii zapasowej i przywracania rêcznie lub wed³ug harmonogramu na jednym lub wielu systemach.
desc_no=Bacula backupsystem
longdesc_ca=Configura Bacula per portar a terme còpies de seguretat i restauracions manualment o de forma planificada, per a un o més sistemes.

View File

@@ -19,3 +19,4 @@ desc_no=Overv&#229;king av b&#229;ndbredde
longdesc_ms_MY=Lihat laporan mengenai penggunaan jalur lebar oleh host, port, protokol dan masa pada sistem Linux.
desc_ms_MY=Pemantauan jalur lebar
longdesc_pl=Raporty na temat wykorzystania transferu przez host, port, protokó³ w okre¶lonym czasie.
longdesc_ca=Visualitza els informes de l'ús d'amplada de banda per host, port, protocol i hores en un sistema Linux.

View File

@@ -146,3 +146,5 @@ Added support for NSEC3PARAM records.
Added support for editing DMARC records, which are specially encoded TXT records for defining the response to SPF and DKIM violations.
---- Changes since 1.770 ----
Automatic creation and deletion of reverse records in partial delegation zones now works the same as in full reverse zones.
---- Changes since 1.810 ----
Added support for editing TLSA (SSL Certificate) records.

View File

@@ -49,10 +49,8 @@ if (open(my $VERSION, "<", "$module_config_directory/version")) {
chop($bind_version = <$VERSION>);
close($VERSION);
}
else {
$bind_version = &get_bind_version();
}
if ($bind_version =~ /^(\d+\.\d+)\./) {
$bind_version ||= &get_bind_version();
if ($bind_version && $bind_version =~ /^(\d+\.\d+)\./) {
# Convery to properly formatted number
$bind_version = $1;
}
@@ -92,9 +90,11 @@ sub have_dnssec_tools_support
# Returns the BIND verison number, or undef if unknown
sub get_bind_version
{
my $out = &backquote_command("$config{'named_path'} -v 2>&1");
if ($out =~ /(bind|named)\s+([0-9\.]+)/i) {
return $2;
if (&has_command($config{'named_path'})) {
my $out = &backquote_command("$config{'named_path'} -v 2>&1");
if ($out =~ /(bind|named)\s+([0-9\.]+)/i) {
return $2;
}
}
return undef;
}
@@ -577,7 +577,7 @@ sub addr_match_input
{
my @av;
my $v = &find($_[1], $_[2]);
if ($v) {
if ($v && $v->{'members'}) {
foreach my $av (@{$v->{'members'}}) {
push(@av, join(" ", $av->{'name'}, @{$av->{'values'}}));
}
@@ -614,10 +614,12 @@ sub address_port_input
my $v = &find($_[4], $_[6]);
my $port;
for (my $i = 0; $i < @{$v->{'values'}}; $i++) {
if ($v->{'values'}->[$i] eq $_[5]) {
$port = $v->{'values'}->[$i+1];
last;
if ($v && $v->{'values'}) {
for (my $i = 0; $i < @{$v->{'values'}}; $i++) {
if ($v->{'values'}->[$i] eq $_[5]) {
$port = $v->{'values'}->[$i+1];
last;
}
}
}
@@ -634,8 +636,10 @@ sub address_input
{
my ($v, @av);
$v = &find($_[1], $_[2]);
foreach my $av (@{$v->{'members'}}) {
push(@av, join(" ", $av->{'name'}, @{$av->{'values'}}));
if ($v && $v->{'members'}) {
foreach my $av (@{$v->{'members'}}) {
push(@av, join(" ", $av->{'name'}, @{$av->{'values'}}));
}
}
if ($_[3] == 0) {
# text area
@@ -687,13 +691,15 @@ sub forwarders_input
{
my $v = &find($_[1], $_[2]);
my (@ips, @prs);
foreach my $av (@{$v->{'members'}}) {
push(@ips, $av->{'name'});
if ($av->{'values'}->[0] eq 'port') {
push(@prs, $av->{'values'}->[1]);
}
else {
push(@prs, undef);
if ($v && $v->{'members'}) {
foreach my $av (@{$v->{'members'}}) {
push(@ips, $av->{'name'});
if ($av->{'values'}->[0] eq 'port') {
push(@prs, $av->{'values'}->[1]);
}
else {
push(@prs, undef);
}
}
}
my @table;
@@ -906,7 +912,8 @@ if ($_[0]->{'members'}) {
else {
# A cached zone object
$zn = $_[0]->{'name'};
$vn = $_[0]->{'view'} eq '*' ? undef : $_[0]->{'view'};
$vn = !defined($_[0]->{'view'}) ||
$_[0]->{'view'} eq '*' ? undef : $_[0]->{'view'};
$file = $_[0]->{'file'};
}
@@ -996,7 +1003,7 @@ elsif ($type eq "NS") {
print &ui_table_row($text{'edit_zonename'},
&ui_textbox("name", $rec{'name'}, 30));
}
elsif ($type eq "SRV") {
elsif ($type eq "SRV" || $type eq "TLSA") {
my ($serv, $proto, $name) =
$rec{'name'} =~ /^([^\.]+)\.([^\.]+)\.(\S+)/ ? ($1, $2, $3) :
(undef, undef, undef);
@@ -1006,7 +1013,7 @@ elsif ($type eq "SRV") {
&ui_textbox("name", $name, 30));
print &ui_table_row($text{'edit_proto'},
&ui_select("proto", $proto,
&ui_select("proto", $proto || "tcp",
[ [ "tcp", "TCP" ],
[ "udp", "UDP" ],
[ "tls", "TLS" ] ], undef, undef, 1));
@@ -1119,6 +1126,28 @@ elsif ($type eq "SRV") {
print &ui_table_row($text{'value_SRV4'},
&ui_textbox("value3", $v[3], 30));
}
elsif ($type eq "TLSA") {
print &ui_table_row($text{'value_TLSA1'},
&ui_select("value0", $v[0],
[ [ 0, $text{'tlsa_usage0'}." (0)" ],
[ 1, $text{'tlsa_usage1'}." (1)" ],
[ 2, $text{'tlsa_usage2'}." (2)" ],
[ 3, $text{'tlsa_usage3'}." (3)" ] ]));
print &ui_table_row($text{'value_TLSA2'},
&ui_select("value1", $v[1],
[ [ 0, $text{'tlsa_selector0'}." (0)" ],
[ 1, $text{'tlsa_selector1'}." (1)" ] ]));
print &ui_table_row($text{'value_TLSA3'},
&ui_select("value2", $v[2],
[ [ 0, $text{'tlsa_match0'}." (0)" ],
[ 1, $text{'tlsa_match1'}." (1)" ],
[ 2, $text{'tlsa_match2'}." (2)" ] ]));
print &ui_table_row($text{'value_TLSA4'},
&ui_textbox("value3", $v[3], 70));
}
elsif ($type eq "LOC") {
print &ui_table_row($text{'value_LOC1'},
&ui_textbox("value0", join(" ", @v), 40), 3);
@@ -1151,23 +1180,23 @@ elsif ($type eq "SPF") {
&ui_yesno_radio("spfptr", $spf->{'ptr'} ? 1 : 0), 3);
print &ui_table_row($text{'value_spfas'},
&ui_textarea("spfas", join("\n", @{$spf->{'a:'}}), 3, 40), 3);
&ui_textarea("spfas", join("\n", @{$spf->{'a:'} || []}), 3, 40), 3);
print &ui_table_row($text{'value_spfmxs'},
&ui_textarea("spfmxs", join("\n", @{$spf->{'mx:'}}), 3, 40), 3);
&ui_textarea("spfmxs", join("\n", @{$spf->{'mx:'} || []}), 3, 40), 3);
print &ui_table_row($text{'value_spfip4s'},
&ui_textarea("spfip4s", join("\n", @{$spf->{'ip4:'}}),
&ui_textarea("spfip4s", join("\n", @{$spf->{'ip4:'} || []}),
3, 40), 3);
if (&supports_ipv6()) {
print &ui_table_row($text{'value_spfip6s'},
&ui_textarea("spfip6s", join("\n", @{$spf->{'ip6:'}}),
&ui_textarea("spfip6s", join("\n", @{$spf->{'ip6:'} || []}),
3, 40), 3);
}
print &ui_table_row($text{'value_spfincludes'},
&ui_textarea("spfincludes", join("\n", @{$spf->{'include:'}}),
&ui_textarea("spfincludes", join("\n", @{$spf->{'include:'} || []}),
3, 40), 3);
print &ui_table_row($text{'value_spfall'},
@@ -1434,7 +1463,7 @@ if ($config{'file_perms'}) {
}
my @cat_list;
if ($bind_version >= 9) {
if ($bind_version && $bind_version >= 9) {
@cat_list = ( 'default', 'general', 'database', 'security', 'config',
'resolver', 'xfer-in', 'xfer-out', 'notify', 'client',
'unmatched', 'network', 'update', 'queries', 'dispatch',
@@ -1567,6 +1596,7 @@ sub make_chroot
{
my $chroot = &get_chroot();
return $_[0] if (!$chroot);
return $_[0] if ($chroot eq "/");
return $_[0] if ($_[0] eq $config{'named_conf'} && $config{'no_chroot'});
return $_[0] if ($_[0] eq $config{'rndc_conf'}); # don't chroot rndc.conf
if ($config{'no_pid_chroot'} && $_[1]) {
@@ -2043,7 +2073,7 @@ return 0;
# an error message on failure.
sub restart_bind
{
if ($config{'restart_cmd'} eq 'restart') {
if ($config{'restart_cmd'} && $config{'restart_cmd'} eq 'restart') {
# Stop and start again
&stop_bind();
sleep(1); # Systemd doesn't like rapid stops and starts
@@ -2667,7 +2697,13 @@ return $base."/".$format;
sub create_on_slaves
{
my ($zone, $master, $file, $hosts, $localview, $moreslaves) = @_;
my %on = map { $_, 1 } @$hosts;
my %on;
if ($hosts && !ref($hosts)) {
$hosts = [ split(/\s+/, $hosts) ];
}
if ($hosts) {
%on = map { $_, 1 } @$hosts;
}
&remote_error_setup(\&slave_error_handler);
my @slaveerrs;
my @slaves = &list_slave_servers();
@@ -2863,7 +2899,7 @@ $slave_error = $_[0];
sub get_forward_record_types
{
return ("A", "NS", "CNAME", "MX", "HINFO", "TXT", "SPF", "DMARC", "WKS", "RP", "PTR", "LOC", "SRV", "KEY", "NSEC3PARAM", $config{'support_aaaa'} ? ( "AAAA" ) : ( ), @extra_forward);
return ("A", "NS", "CNAME", "MX", "HINFO", "TXT", "SPF", "DMARC", "WKS", "RP", "PTR", "LOC", "SRV", "KEY", "TLSA", "NSEC3PARAM", $config{'support_aaaa'} ? ( "AAAA" ) : ( ), @extra_forward);
}
sub get_reverse_record_types
@@ -3078,8 +3114,10 @@ return &has_command($config{'signzone'}) &&
# dnssec-validation directive is not supported, 0 otherwise
sub supports_dnssec_client
{
return $bind_version >= 9.4 ? 2 :
$bind_version >= 9 ? 1 : 0;
my ($bind_major, $bind_minor) = split(/\./, $bind_version);
return $bind_major > 9 ? 2 :
$bind_major == 9 ? ($bind_minor >= 4 ? 2 : 1) : 0;
}
# dnssec_size_range(algorithm)
@@ -3292,7 +3330,7 @@ my $dom = $z->{'members'} ? $z->{'values'}->[0] : $z->{'name'};
my @keys = &get_dnssec_key($z);
foreach my $key (@keys) {
foreach my $f ('publicfile', 'privatefile') {
&unlink_file($key->{$f}) if ($key->{$f});
&unlink_file($key->{$f}) if (ref($key) && $key->{$f});
}
}
@@ -3430,7 +3468,7 @@ if ($keyrec) {
}
# get_dnssec_key(&zone|&zone-name)
# Returns a list of hash containing details of a zone's keys, or an error
# Returns a list of hashes containing details of a zone's keys, or an error
# message. The KSK is always returned first.
sub get_dnssec_key
{
@@ -3460,6 +3498,7 @@ foreach my $f (readdir(ZONEDIR)) {
$rv->{'public'} = $pub->{'values'}->[3];
$rv->{'values'} = $pub->{'values'};
$rv->{'publictext'} = &read_file_contents("$dir/$f");
while($rv->{'publictext'} =~ s/^;.*\r?\n//) { }
}
elsif ($f =~ /^K\Q$dom\E\.\+(\d+)\+(\d+)\.private$/) {
# Found the private key file
@@ -3477,6 +3516,7 @@ foreach my $f (readdir(ZONEDIR)) {
}
$rv->{'algorithm'} =~ s/^\d+\s+\((\S+)\)$/$1/;
$rv->{'privatetext'} = join("\n", @$lref)."\n";
while($rv->{'privatetext'} =~ s/^;.*\r?\n//) { }
}
}
closedir(ZONEDIR);

View File

@@ -67,7 +67,7 @@ print &ui_table_row($text{'trusted_dlvs'},
# Trusted keys
my @ktable = ( );
$i = 0;
foreach my $k (@{$tkeys->{'members'}}, { }) {
foreach my $k (@{$tkeys->{'members'}}, { 'values' => [ ] }) {
my @v = @{$k->{'values'}};
my @wrapped = ( );
while(length($v[3]) > 30) {

View File

@@ -124,7 +124,7 @@ print &ui_table_start($text{'zonedef_msg2'}, "width=100%", 4);
print &addr_match_input($text{'zonedef_transfer'}, "allow-transfer", $mems);
print &addr_match_input($text{'zonedef_query'}, "allow-query", $mems);
print &addr_match_input($text{'master_notify2'}, "allow-notify", $mems);
print &addr_match_input($text{'master_notify2'}, "also-notify", $mems);
print &ignore_warn_fail($text{'zonedef_cmaster'}, 'master', $check{'master'});
print &ignore_warn_fail($text{'zonedef_cslave'}, 'slave', $check{'slave'});

View File

@@ -13,7 +13,7 @@ require './bind8-lib.pl';
my $zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
my ($zconf, $conf, $parent) = &zone_to_config($zone);
&can_edit_zone($zconf) ||
&can_edit_zone($zone) ||
&error($text{'master_edelete'});
$access{'ro'} && &error($text{'master_ero'});

View File

@@ -146,7 +146,7 @@ if (!$access{'ro'} && $type eq 'master') {
push(@hcols, &ui_link("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&type=$in{'type'}&sort=1", ($in{'type'} eq "PTR" ? $text{'recs_addr'} : $text{'recs_name'}) ) );
push(@hcols, &ui_link("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&type=$in{'type'}&sort=5", $text{'recs_type'}) ) if ($in{'type'} eq "ALL");
push(@hcols, $text{'recs_ttl'});
my @hmap = @{$hmap{$in{'type'}}};
my @hmap = $hmap{$in{'type'}} ? @{$hmap{$in{'type'}}} : ( );
foreach my $h (@hmap) {
push(@hcols, &ui_link("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&type=$in{'type'}&sort=2",$h) );
}
@@ -207,6 +207,20 @@ for(my $i=0; $i<@_; $i++) {
}
else {
$v = $r->{'values'}->[$j];
if ($in{'type'} eq "TLSA") {
# Display TLSA codes nicely
if ($j == 0) {
$v = $text{'tlsa_usage'.$v};
}
elsif ($j == 1) {
$v = $text{'tlsa_selector'.$v};
}
elsif ($j == 2) {
$v = $text{'tlsa_match'.$v};
}
$v = $v ? $v." (".$r->{'values'}->[$j].")"
: $r->{'values'}->[$j];
}
}
if (length($v) > 80) {
$v = substr($v, 0, 80)." ...";

View File

@@ -28,7 +28,7 @@ if ($zone->{'file'}) {
undef, undef, $lasttrans);
my (@rcodes, @rtitles, @rlinks, @ricons, %rnum, $done_recs);
if ($zone->{'file'}) {
if ($zone->{'file'} && -r $zone->{'file'}) {
print "<p>\n";
my @recs = &read_zone_file($zone->{'file'}, $dom);
if ($dom =~ /in-addr\.arpa/i || $dom =~ /\.$ipv6revzone/i) {

View File

@@ -44,6 +44,10 @@ if (my $out = &check_bind_8()) {
# Try to get the version number, and save for later calls
my $bind_version = &get_bind_version();
if ($bind_version && $bind_version =~ /^(\d+\.\d+)\./) {
# Convery to properly formatted number
$bind_version = $1;
}
my $VERSION;
&open_tempfile($VERSION, ">$module_config_directory/version");
&print_tempfile($VERSION, "$bind_version\n");
@@ -345,6 +349,8 @@ elsif (@zones) {
next if (!@zv);
print "<b>",&text('index_inview',
"<tt>$vw->{'name'}</tt>"),"</b><br>\n";
my (@zlinks, @ztitles, @zsort, @zicons, @ztypes, @zdels);
my $len = 0;
foreach my $z (@zv) {
my $v = $z->{'name'};
my $t = $z->{'type'};
@@ -452,7 +458,8 @@ if ($access{'views'} && $bind_version >= 9) {
print &ui_subheading($text{'index_views'});
# Show a warning if any zones are not in a view
my @notinview = grep { $_->{'viewindex'} eq '' } @zones;
my @notinview = grep { !defined($_->{'viewindex'}) ||
$_->{'viewindex'} eq '' } @zones;
if (@notinview && @views) {
print "<b>",&text('index_viewwarn',
join(" , ", map { "<tt>".&ip6int_to_net(

View File

@@ -286,6 +286,7 @@ edit_rusure=Segur que vols suprimir el registre $1 del domini $2, i possiblement
edit_dok=Sí, Suprimeix-lo
edit_eptr='$1' no és un nom de host de registre d'adreça inversa vàlid
edit_espfa='$1' no és un host destinació vàlid
edit_espfa2='$1' ha de ser un nom de host, no una adreça IP
edit_espfmx='$1' no és un nom de domini destinació vàlid
edit_espfmxmax=No tens permís per tenir més de 10 dominis des dels quals enviar MX
edit_espfip='$1' no és una adreça IP o IP/prefix destinació vàlida
@@ -1097,6 +1098,7 @@ dnssec_header=Opcions de re-signatura de la clau
dnssec_enabled=Activació automàtica de la re-signatura de la clau
dnssec_period=Període entre re-signatures
dnssec_days=dies
dnssec_secs=segons
dnssec_desc=Les zones signades amb DNSSEC tenen típicament dues claus - una clau de zona que s'ha de regenerar i signar regularment, i una clau de signatura que roman constant. Aquesta pàgina permet configurar Webmin per dur a terme aquesta re-signatura automàticament.
dnssec_err=No s'ha pogut desar la re-signatura de la clau DNSSEC
dnssec_eperiod=Hi falta el nombre de dies entre re-signatures o bé és invàlid

View File

@@ -271,6 +271,10 @@ edit_eloc=Missing latitude and longitude
edit_eweight='$1' is not a valid service weight
edit_eport='$1' is not a valid port number
edit_etarget='$1' is not a valid server name or address
edit_eusage='$1' is not a valid TLSA usage number
edit_eselector='$1' is not a valid TLSA selector number
edit_ematch='$1' is not a valid TLSA match number
edit_etlsa=Invalid TLSA encoded certificate - must contain only 2-digit hex bytes
edit_return=records
edit_ecname1=You cannot create a name alias record with the same name as an existing record.
edit_ecname2=You cannot create a record with the same name as an existing name alias record.
@@ -378,6 +382,7 @@ type_HINFO=Host Information
type_NSEC3PARAM=DNSSEC Parameters
type_TXT=Text
type_SPF=Sender Permitted From
type_TLSA=SSL Certificate
type_DMARC=DMARC
type_WKS=Well Known Service
type_RP=Responsible Person
@@ -444,6 +449,10 @@ value_SRV1=Priority
value_SRV2=Weight
value_SRV3=Port
value_SRV4=Server
value_TLSA1=Certificate usage
value_TLSA2=Certificate selector
value_TLSA3=Certificate match
value_TLSA4=Certificate data
value_KEY1=Flags
value_KEY2=Protocol
value_KEY3=Algorithm
@@ -489,6 +498,16 @@ value_dmarcaspf=Require strict SPF alignment
value_dmarcadkim=Require strict DKIM alignment
value_dmarcnor=Don't send
tlsa_usage0=Certificate authority
tlsa_usage1=End entity
tlsa_usage2=Trust anchor
tlsa_usage3=Domain issued
tlsa_selector0=Full certificate
tlsa_selector1=Public key info
tlsa_match0=Unhashed contents
tlsa_match1=SHA-256 hashed
tlsa_match2=SHA-512 hashed
warn=Warn
fail=Fail
ignore=Ignore

View File

@@ -20,15 +20,15 @@ if ($type eq 'record') {
$p->{'newvalues'}) {
return &text("log_${action}_record_v",
$text{"type_$p->{'type'}"},
"<tt>$p->{'name'}</tt>",
"<tt>$object</tt>",
"<tt>$p->{'newvalues'}</tt>");
"<tt>".&html_escape($p->{'name'})."</tt>",
"<tt>".&html_escape($object)."</tt>",
"<tt>".&html_escape($p->{'newvalues'})."</tt>");
}
else {
return &text("log_${action}_record",
$text{"type_$p->{'type'}"},
"<tt>$p->{'name'}</tt>",
"<tt>$object</tt>");
"<tt>".&html_escape($p->{'name'})."</tt>",
"<tt>".&html_escape($object)."</tt>");
}
}
}

View File

@@ -38,7 +38,7 @@ foreach my $d (split(/\0/, $in{'d'})) {
else {
$zconf = $conf->[$zone->{'index'}];
}
&can_edit_zone($zconf, $view) ||
&can_edit_zone($zone) ||
&error($text{'master_edelete'});
push(@zones, [ $zconf, $view ]);
push(@znames, $zconf->{'value'});

View File

@@ -70,7 +70,7 @@ foreach my $zi (@zones) {
my @recs = &read_zone_file($zi->{'file'}, $zi->{'name'});
my $realfile = &make_chroot(&absolute_path($zi->{'file'}));
foreach my $r (@recs) {
my $v = join(" ", @{$r->{'values'}});
my $v = join(" ", @{$r->{'values'} || []});
if ($r->{'type'} eq $in{'type'} &&
($v eq $in{'old'} || $in{'old_def'})) {
# Found a regular record to fix

View File

@@ -38,3 +38,4 @@ longdesc_ms_MY=Membuat dan mengubah domain, rekod DNS, 'options' dan 'views' pad
desc_ms_MY=Pelayan DNS BIND
longdesc_de=Erstellt und bearbeitet Domains, DNS-Eintr&#228;ge, BIND-Optionen und Ansichten.
longdesc_pl=Twórz i edytuj domeny, rekordy DNS, opcje BIND i widoki.
longdesc_ca=Crea i edita dominis, registres DNS records, opcions BIND i vistes.

View File

@@ -29,7 +29,7 @@ if (&is_raw_format_records($rootfile)) {
&has_command("named-compilezone") ||
&error("Zone file $rootfile is in raw format, but the ".
"named-compilezone command is not installed");
&open_execute_command($FILE, "named-compilezone -f raw -F text -o - $origin $rootfile", 1, 1);
open($FILE, "named-compilezone -f raw -F text -o - $origin $rootfile |");
}
else {
# Can read text format records directly
@@ -827,7 +827,7 @@ if ($dmarc->{'other'}) {
push(@rv, @{$dmarc->{'other'}});
}
my @rvwords;
my $rvword;
my $rvword = "";
while(@rv) {
my $w = shift(@rv);
if (length($rvword)+length($w)+1 >= 255) {
@@ -969,7 +969,8 @@ sub record_id
{
my ($r) = @_;
return $r->{'name'}."/".$r->{'type'}.
(uc($r->{'type'}) eq 'SOA' ? '' : '/'.join('/', @{$r->{'values'}}));
(uc($r->{'type'}) eq 'SOA' || !$r->{'values'} ? '' :
'/'.join('/', @{$r->{'values'}}));
}
# find_record_by_id(&recs, id, index)
@@ -1018,7 +1019,7 @@ sub get_dnskey_rrset
sub is_raw_format_records
{
my ($file) = @_;
open(my $RAW, "<", $file);
open(my $RAW, "<", $file) || return 0;
my $buf;
read($RAW, $buf, 3);
close($RAW);

View File

@@ -13,7 +13,7 @@ my $dom;
my $err;
my $debug;
if ($ARGV[0] eq "--debug") {
if (@ARGV && $ARGV[0] eq "--debug") {
$debug = 1;
}
my $period = $config{'dnssec_period'} || 21;

View File

@@ -281,6 +281,21 @@ else {
&valname($in{'value3'}) ||
&error(&text('edit_etarget', $in{'value3'}));
}
elsif ($in{'type'} eq 'TLSA') {
$in{'serv'} =~ /^[A-Za-z0-9\-\_]+$/ ||
&error(&text('edit_eserv2', $in{'serv'}));
$in{'name'} = join(".", "_".$in{'serv'}, "_".$in{'proto'},
$in{'name'} ? ( $in{'name'} ) : ( ));
$in{'value0'} =~ /^\d+$/ ||
&error(text('edit_eusage', $in{'value0'}));
$in{'value1'} =~ /^\d+$/ ||
&error(text('edit_eselector', $in{'value1'}));
$in{'value2'} =~ /^\d+$/ ||
&error(text('edit_ematch', $in{'value2'}));
$in{'value3'} =~ /^[a-f0-9]+$/ &&
length($in{'value3'}) % 2 == 0 ||
&error(&text('edit_etlsa', $in{'value3'}));
}
elsif ($in{'type'} eq 'KEY') {
$in{'value0'} =~ /^(\d+|0x[0-9a-f]+={0,2})$/i ||
&error(text('edit_eflags', $in{'value0'}));

View File

@@ -155,7 +155,7 @@ foreach my $s (@add) {
push(@{$n->{'members'}}, { 'name' => $sip });
&lock_file($z->{'file'});
&save_directive($z, $d, [ $n ], 1);
&flush_file_lines($z->{'file'});
&flush_file_lines();
$dchanged++;
}
}

View File

@@ -27,3 +27,4 @@ desc_pl.UTF-8=Udostępnianie po NFS
desc_hu.UTF-8=NFS exprotálás
desc_nl=NFS Exports
longdesc_de=Bearbeitet Datei-Freigaben aus der FreeBSD-Datei /etc/exports.
longdesc_ca=Edita les unitats compartides del fitxer /etc/exports de FreeBSD.

View File

@@ -1,161 +1,160 @@
disk_add=F&#252;ge ein neues Slice hinzu.
disk_blocks=<b>Bl&#246;cke:</b> $1
disk_cylinders=<b>Zylinder:</b> $1
disk_device=<b>Ger&#228;te-Datei:</b> $1
disk_dsize=<b>Festplattengr&#246;&#223;e:</b> $1
disk_egone=Festplatte existiert nicht l&#228;nger!
disk_end=Endblock
disk_extent=Extent
disk_free=Freier Speicher
disk_iscsi=iSCSI geteiltes Ger&#228;t $1
disk_model=<b>Marke und Modell:</b> $1
disk_no=Slice
disk_none=Dieses Laufwerk hat bisher keine Slices.
disk_parts=Partitionen
disk_return=Festplattendetails und Liste an Slices
disk_scount=$1 Partitionen
disk_size=Gr&#246;&#223;e
disk_smart=Zeige SMART Status
disk_smartdesc=Zeigt den aktuellen Status dieses Laufwerk wie von SMART erkannt, und &#252;berpr&#252;ft auf Festplattenfehler.
disk_start=Startblock
disk_table=<b>Partitionsformat:</b> $1
disk_title=Editiere Festplatte
disk_type=Typ
disk_use=Benutzt von
disk_vm=Virtueller Speicher
dpart_confirm=L&#246;sche Jetzt
dpart_deleting=L&#246;sche Partition $1 ..
dpart_done=.. fertig
dpart_failed=.. L&#246;schen fehlgeschlagen : $1
dpart_rusure=Sind Sie sicher, dass Sie die Partition $1 l&#246;schen m&#246;chten? Alle Dateisysteme in ihr werden ebenfalls gel&#246;scht.
dpart_title=L&#246;sche Partition
dpart_warn=Warnung - diese Partition ist aktuell in Benutzung von $1
dslice_confirm=Jetzt l&#246;schen
dslice_deleting=L&#246;sche Slice $1 ..
dslice_done=.. fertig
dslice_failed=.. l&#246;schen fehlgeschlagen : $1
dslice_rusure=Sind Sie sicher, dass Sie den Slice $1 l&#246;schen m&#246;chten? Alle Partitionen und Dateisysteme in ihm werden ebenfalls gel&#246;scht.
dslice_title=L&#246;sche Slice
dslice_warn=Warnung - Dieses Slice ist derzeit in Verwendung : $1
fsck_checking=Pr&#252;fe Dateisystem auf $1 ..
fsck_done=.. Pr&#252;fung abgeschlossen ohne Fehler zu finden
fsck_err=Fehlgeschlagen Dateisystem zu pr&#252;fen
fsck_failed=.. Pr&#252;fung fehlgeschlagen!
fsck_title=Pr&#252;fe Dateisystem
index_dmodel=Marke und Modell
index_dname=Festplattenname
index_dparts=Slices
index_dsize=Gesamtgr&#246;&#223;e
index_ecmd=Der erforderliche Befehl $1 fehlt
index_none=Keine Festplatten wurden auf diesem System gefunden!
index_problem=Dieses Modul kann nicht verwendet werden : $1
index_return=Liste an Festplatten
index_title=Partitionen auf lokalen Festplatten
log_create_part=Partition $1 erstellt
log_create_slice=Slice $1 erstellt
log_delete_part=Partition $1 gel&#246;scht
log_delete_slice=Slice $1 gel&#246;scht
log_fsck_part=Dateisystem auf der Partition $1 &#252;berpr&#252;ft
log_modify_part=Partition $1 modifiziert
log_modify_slice=Slice $1 modifiziert
log_newfs_part=Dateisystem auf Partition $1 erstellt
newfs_create=Erstelle jetzt
newfs_creating=Erstelle Dateisystem auf $1 ..
newfs_deffree=Standard (8%)
newfs_done=.. erstellen erfolgreich
newfs_efree=Speicherplatz zum Reservieren f&#252;r root muss Prozent sein
newfs_elabel=Fehlendes oder ung&#252;ltiges Label
newfs_err=Fehlgeschlagen Dateisystem zu erstellen
newfs_failed=.. erstellen fehlgeschlagen!
newfs_free=Speicherplatz zum Reservieren f&#252;r root
newfs_header=Neues Dateisystem Details
newfs_label=Dateisystem Label
newfs_none=Keines
newfs_title=Erstelle Dateisystem
newfs_trim=Aktiviere TRIM-Modus f&#252;r SSDs
npart_creating=Erstelle Partition $1 auf $2
npart_diskblocks=Slice Gr&#246;&#223;e in Bl&#246;cken
npart_done=.. Partition erstellt
npart_eclash=Eine Partition mit Buchstaben $1 existiert bereits
npart_eletter=Partition Nummer muss ein Buchstabe von A bis D sein
npart_emax=Endblock kann nicht gr&#246;&#223;er als die Slice Gr&#246;&#223;e von $1 Bl&#246;cken sein
npart_err=Fehlgeschlagen Partition zu erstellen
npart_failed=.. Partition Erstellung fehlgeschlagen : $1
npart_header=Neue Partition Details
npart_letter=Partition Buchstabe
npart_title=Erstelle Partition
npart_type=Partitionstyp
nslice_creating=Erstelle Slice $1 auf $2 ..
nslice_diskblocks=Festplattengr&#246;&#223;e in Bl&#246;cken
nslice_done=.. Slice hinzugef&#252;gt
nslice_eclash=Ein Slice mit Nummer $1 existiert bereits
nslice_eend=Endblock muss eine Nummer sein
nslice_emax=Endblock kann nicht gr&#246;&#223;er sein als Festplattengr&#246;&#223;e von $1 Bl&#246;cken
nslice_end=Endblock
nslice_enumber=Fehlende oder nicht-numerische Slice-Nummer
nslice_erange=Startblock muss kleiner als der Endblock sein
nslice_err=Fehlgeschlagen Slice zu erstellen
nslice_estart=Startblock muss eine Nummer sein
nslice_failed=.. Slice Erstellung fehlgeschlagen : $1
nslice_header=Neues Slice Details
nslice_makepart=Erstelle eine Standard-Partition?
nslice_number=Slice Nummer
nslice_parting=Erstelle Standard-Partitionen in Slice $1 auf $2 ..
nslice_pdone=.. Partition erstellt
nslice_pfailed=.. Partition Erstellung fehlgeschlagen : $1
nslice_start=Startblock
nslice_title=Erstelle Slice
nslice_type=Neuer Slice Typ
part_cannotedit=Diese Partition kann nicht ver&#228;ndert werden, da diese derzeit in Gebrauch ist.
part_delete=L&#246;sche Partition
part_deletedesc=Klicke auf diese Taste, um diese Partition aus dem Slice zu entfernen. Alle Daten auf der Partition werden f&#252;r immer verloren sein.
part_device=Ger&#228;tedatei
part_egone=Partition existiert nicht l&#228;nger!
part_end=Endblock
part_err=Fehlgeschlagen Partition zu speichern
part_esave=Aktuell benutzt von $1
part_foruse=F&#252;r den Einsatz von $1
part_fsck=Pr&#252;fe Dateisystem
part_fsckdesc=Klicke auf diese Taste, um das UFS-Dateisystem auf diesem Ger&#228;t zu &#252;berpr&#252;fen und gefundene Fehler zu reparieren.
part_header=Partitionsdetails
part_inuse=In Benutzung von $1
part_mountmsg=Mount dieses Ger&#228;t auf neues Verzeichnis auf Ihrem System, so dass es verwendet werden kann, um Dateien zu speichern. Ein Dateisystem muss bereits auf der Partition erstellt worden sein.
part_mountmsg2=Mount dieses Ger&#228;t als virtuellen Speicher auf Ihrem System, um die Menge des verf&#252;gbaren Speichers zu erh&#246;hen.
npart_eclash=Eine Partition mit Buchstaben $1 existiert bereits
disk_scount=$1 Partitionen
index_ecmd=Der erforderliche Befehl $1 fehlt
disk_parts=Partitionen
npart_type=Partitionstyp
newfs_create=Erstelle jetzt
part_newfs=Erstelle Dateisystem
part_newfsdesc=Klicke auf diese Schaltfl&#228;che, um ein neues UFS-Dateisystem auf diesem Ger&#228;t zu erstellen. Alle Daten, die zuvor auf der Partition waren, werden gel&#246;scht.
log_newfs_part=Dateisystem auf Partition $1 erstellt
part_mountmsg=Mount dieses Ger&#228;t auf neues Verzeichnis auf Ihrem System, so dass es verwendet werden kann, um Dateien zu speichern. Ein Dateisystem muss bereits auf der Partition erstellt worden sein.
slice_ssize=Slice Gr&#246;&#223;e
slice_none=Dieses Slice hat bisher keine Partitionen.
index_dname=Festplattenname
slice_err=Fehlgeschlagen Slice zu modifizieren
nslice_enumber=Fehlende oder nicht-numerische Slice-Nummer
part_cannotedit=Diese Partition kann nicht ver&#228;ndert werden, da diese derzeit in Gebrauch ist.
nslice_erange=Startblock muss kleiner als der Endblock sein
dpart_deleting=L&#246;sche Partition $1 ..
part_fsckdesc=Klicke auf diese Taste, um das UFS-Dateisystem auf diesem Ger&#228;t zu &#252;berpr&#252;fen und gefundene Fehler zu reparieren.
part_deletedesc=Klicke auf diese Taste, um diese Partition aus dem Slice zu entfernen. Alle Daten auf der Partition werden f&#252;r immer verloren sein.
fsck_done=.. Pr&#252;fung abgeschlossen ohne Fehler zu finden
npart_header=Neue Partition Details
nslice_header=Neues Slice Details
newfs_failed=.. erstellen fehlgeschlagen!
slice_letter=Partition
fsck_checking=Pr&#252;fe Dateisystem auf $1 ..
index_dmodel=Marke und Modell
disk_start=Startblock
part_end=Endblock
part_inuse=In Benutzung von $1
log_fsck_part=Dateisystem auf der Partition $1 &#252;berpr&#252;ft
slice_use=Benutzt von
newfs_free=Speicherplatz zum Reservieren f&#252;r root
dpart_failed=.. L&#246;schen fehlgeschlagen : $1
disk_blocks=<b>Bl&#246;cke:</b> $1
npart_creating=Erstelle Partition $1 auf $2
npart_err=Fehlgeschlagen Partition zu erstellen
nslice_eend=Endblock muss eine Nummer sein
part_foruse=F&#252;r den Einsatz von $1
newfs_none=Keines
newfs_elabel=Fehlendes oder ung&#252;ltiges Label
disk_title=Editiere Festplatte
index_none=Keine Festplatten wurden auf diesem System gefunden!
part_newmount=Mount Partition auf:
log_delete_slice=Slice $1 gel&#246;scht
nslice_eclash=Ein Slice mit Nummer $1 existiert bereits
dslice_title=L&#246;sche Slice
slice_type=Typ
nslice_emax=Endblock kann nicht gr&#246;&#223;er sein als Festplattengr&#246;&#223;e von $1 Bl&#246;cken
dpart_warn=Warnung - diese Partition ist aktuell in Benutzung von $1
slice_title=Editiere Slice
npart_failed=.. Partition Erstellung fehlgeschlagen : $1
newfs_trim=Aktiviere TRIM-Modus f&#252;r SSDs
disk_type=Typ
newfs_label=Dateisystem Label
part_type=Partitionstyp
newfs_title=Erstelle Dateisystem
disk_device=<b>Ger&#228;te-Datei:</b> $1
nslice_parting=Erstelle Standard-Partitionen in Slice $1 auf $2 ..
disk_dsize=<b>Festplattengr&#246;&#223;e:</b> $1
newfs_efree=Speicherplatz zum Reservieren f&#252;r root muss Prozent sein
slice_sstart=Startender Block
npart_diskblocks=Slice Gr&#246;&#223;e in Bl&#246;cken
index_dparts=Slices
slice_egone=Ausgew&#228;hltes Slice existiert nicht!
disk_model=<b>Marke und Modell:</b> $1
nslice_makepart=Erstelle eine Standard-Partition?
nslice_title=Erstelle Slice
disk_none=Dieses Laufwerk hat bisher keine Slices.
part_newfsdesc=Klicke auf diese Schaltfl&#228;che, um ein neues UFS-Dateisystem auf diesem Ger&#228;t zu erstellen. Alle Daten, die zuvor auf der Partition waren, werden gel&#246;scht.
nslice_pfailed=.. Partition Erstellung fehlgeschlagen : $1
dpart_title=L&#246;sche Partition
nslice_creating=Erstelle Slice $1 auf $2 ..
part_header=Partitionsdetails
newfs_deffree=Standard (8%)
newfs_creating=Erstelle Dateisystem auf $1 ..
part_newmount2=Mount Partition
part_nouse=Nichts
newfs_header=Neues Dateisystem Details
part_err=Fehlgeschlagen Partition zu speichern
fsck_failed=.. Pr&#252;fung fehlgeschlagen!
dpart_rusure=Sind Sie sicher, dass Sie die Partition $1 l&#246;schen m&#246;chten? Alle Dateisysteme in ihr werden ebenfalls gel&#246;scht.
dslice_warn=Warnung - Dieses Slice ist derzeit in Verwendung : $1
slice_end=Endblock
slice_send=Endblock
log_create_slice=Slice $1 erstellt
dslice_failed=.. l&#246;schen fehlgeschlagen : $1
slice_none2=Dieses Slice hat keine Partitionen, und keines kann erstellt werden, solange es in Verwendung als Dateisystem ist.
npart_done=.. Partition erstellt
log_modify_slice=Slice $1 modifiziert
index_dsize=Gesamtgr&#246;&#223;e
part_delete=L&#246;sche Partition
slice_add=Eine neue Partition hinzuf&#252;gen.
dslice_deleting=L&#246;sche Slice $1 ..
npart_emax=Endblock kann nicht gr&#246;&#223;er als die Slice Gr&#246;&#223;e von $1 Bl&#246;cken sein
fsck_err=Fehlgeschlagen Dateisystem zu pr&#252;fen
disk_size=Gr&#246;&#223;e
slice_extent=Extent
disk_smart=Zeige SMART Status
nslice_err=Fehlgeschlagen Slice zu erstellen
newfs_err=Fehlgeschlagen Dateisystem zu erstellen
dslice_rusure=Sind Sie sicher, dass Sie den Slice $1 l&#246;schen m&#246;chten? Alle Partitionen und Dateisysteme in ihm werden ebenfalls gel&#246;scht.
slice_start=Startblock
disk_use=Benutzt von
part_return=Partitionsdetails
part_size=Partitionsgr&#246;&#223;e
part_start=Startblock
part_title=Editiere Partition
part_type=Partitionstyp
part_use=Aktuell benutzt von
select_device=$1 Ger&#228;t $2
disk_iscsi=iSCSI geteiltes Ger&#228;t $1
nslice_done=.. Slice hinzugef&#252;gt
disk_no=Slice
index_return=Liste an Festplatten
nslice_number=Slice Nummer
select_part=$1 Ger&#228;t $2 Slice $3 Partition $4
select_slice=$1 Ger&#228;t $2 Slice $3
slice_add=Eine neue Partition hinzuf&#252;gen.
slice_delete=L&#246;sche Slice
log_delete_part=Partition $1 gel&#246;scht
part_nouse=Nichts
disk_free=Freier Speicher
slice_deletedesc=L&#246;sche diesen Slice und alle Partitionen und Dateisysteme innerhalb. Alle Daten auf diesem Dateisystem werden mit ziemlicher Sicherheit nicht wiederhergestellt werden k&#246;nnen.
slice_egone=Ausgew&#228;hltes Slice existiert nicht!
slice_end=Endblock
slice_err=Fehlgeschlagen Slice zu modifizieren
slice_extent=Extent
slice_header=Slice Details
slice_letter=Partition
slice_none=Dieses Slice hat bisher keine Partitionen.
slice_none2=Dieses Slice hat keine Partitionen, und keines kann erstellt werden, solange es in Verwendung als Dateisystem ist.
slice_return=Slice Details und Liste an Partitionen
part_esave=Aktuell benutzt von $1
part_start=Startblock
fsck_title=Pr&#252;fe Dateisystem
part_mountmsg2=Mount dieses Ger&#228;t als virtuellen Speicher auf Ihrem System, um die Menge des verf&#252;gbaren Speichers zu erh&#246;hen.
disk_smartdesc=Zeigt den aktuellen Status dieses Laufwerk wie von SMART erkannt, und &#252;berpr&#252;ft auf Festplattenfehler.
slice_sactive=Aktiv Slice?
slice_sblocks=Anzahl an Bl&#246;cken
slice_send=Endblock
slice_size=Gr&#246;&#223;e
slice_ssize=Slice Gr&#246;&#223;e
slice_sstart=Startender Block
slice_start=Startblock
slice_stype=Slice Typ
npart_letter=Partition Buchstabe
slice_suse=Direkt benutzt von
slice_title=Editiere Slice
slice_type=Typ
slice_use=Benutzt von
select_slice=$1 Ger&#228;t $2 Slice $3
nslice_failed=.. Slice Erstellung fehlgeschlagen : $1
disk_egone=Festplatte existiert nicht l&#228;nger!
part_use=Aktuell benutzt von
slice_header=Slice Details
disk_extent=Extent
log_modify_part=Partition $1 modifiziert
slice_return=Slice Details und Liste an Partitionen
nslice_pdone=.. Partition erstellt
nslice_start=Startblock
newfs_done=.. erstellen erfolgreich
nslice_end=Endblock
part_title=Editiere Partition
disk_return=Festplattendetails und Liste an Slices
part_fsck=Pr&#252;fe Dateisystem
slice_stype=Slice Typ
npart_eletter=Partition Nummer muss ein Buchstabe von A bis D sein
nslice_type=Neuer Slice Typ
index_title=Partitionen auf lokalen Festplatten
slice_delete=L&#246;sche Slice
slice_size=Gr&#246;&#223;e
dslice_confirm=Jetzt l&#246;schen
log_create_part=Partition $1 erstellt
dslice_done=.. fertig
disk_end=Endblock
part_egone=Partition existiert nicht l&#228;nger!
npart_title=Erstelle Partition
slice_sblocks=Anzahl an Bl&#246;cken
nslice_diskblocks=Festplattengr&#246;&#223;e in Bl&#246;cken
disk_add=F&#252;ge ein neues Slice hinzu.
index_problem=Dieses Modul kann nicht verwendet werden : $1
disk_vm=Virtueller Speicher
select_device=$1 Ger&#228;t $2
dpart_confirm=L&#246;sche Jetzt
nslice_estart=Startblock muss eine Nummer sein
dpart_done=.. fertig

View File

@@ -6,3 +6,4 @@ desc_de=Partitionen auf lokalen Festplatten
longdesc=Create and edit paritions on local SCSI and IDE disks on FreeBSD.
longdesc_de=Erstellt und bearbeitet Partitionen auf lokalen SCSI- und IDE-Festplatten auf FreeBSD.
desc_ca=Particions dels Discs Locals
longdesc_ca=Crea i edita les particions de discs locals SCSI i IDE a FreeBSD.

View File

@@ -28,3 +28,4 @@ longdesc_ms_MY=Burn data CD dari imej ISO atau direktori yang dipilih.
desc_ms_MY=CD Burner
longdesc_de=Brennt Daten-CD von ISO-images oder ausgew&#228;hlten Verzeichnissen.
longdesc_pl=Nagrywaj dane na CD z obrazów ISO lub wybranych katalogów.
longdesc_ca=Torra CDs de dades a partir d'imatges ISO o directoris seleccionats.

View File

@@ -8,6 +8,8 @@ require './change-user-lib.pl';
our (%text, %in, %gconfig, $base_remote_user, %access);
&ReadParse();
&ui_print_unbuffered_header(undef, $text{'change_title'}, "");
my @users = &acl::list_users();
my ($user) = grep { $_->{'name'} eq $base_remote_user } @users;
my $oldtheme = $user->{'theme'};
@@ -74,7 +76,12 @@ if ($access{'pass'} && &can_change_pass($user) && !$in{'pass_def'}) {
$user->{'temppass'} = 0;
}
&ui_print_unbuffered_header(undef, $text{'change_title'}, "");
if ($access{'theme'} &&
($newtheme ne $oldtheme || $newoverlay ne $oldoverlay)) {
if (defined(&theme_pre_change_theme)) {
&theme_pre_change_theme();
}
}
print "$text{'change_user'}<br>\n";
&acl::modify_user($user->{'name'}, $user);
@@ -86,6 +93,9 @@ print "$text{'change_done'}<p>\n";
if ($access{'theme'} &&
($newtheme ne $oldtheme || $newoverlay ne $oldoverlay)) {
if (defined(&theme_post_change_theme)) {
&theme_post_change_theme();
}
print "$text{'change_redirect'}<br>\n";
print &js_redirect("/", "top");
print "$text{'change_done'}<p>\n";

View File

@@ -36,3 +36,4 @@ longdesc_hu=Webmin nyelvezet
longdesc_ms_MY=Membolehkan pengguna Webmin untuk menukar bahasa, tema dan mungkin kata laluan.
desc_ms_MY=Tukar Bahasa dan Tema
longdesc_pl=Pozwala aktualnemu u¿ytkownikowi Webimina na zmianê jêzyka, motywu i has³a (o ile to mo¿liwe).
longdesc_ca=Permet que l'usuari actual de Webmin es canviï el seu idioma, tema i, possiblement, contrasenya.

View File

@@ -15,3 +15,4 @@ desc_hu=Cluster f
longdesc_ms_MY=Jadualkan pemindahan fail dari pelayan ini ke pelayan yang lain dalam kluster Webmin.
desc_ms_MY=Kluster Fail Salinan
longdesc_pl=Zaplanowany transfer plików z tego serwera do innych serwerów w klastrze.
longdesc_ca=Planifica la transferència de fitxers des d'aquest servidor a múltiples servidors d'un cluster Webmin.

View File

@@ -16,3 +16,4 @@ desc_hu=Cluster id
longdesc_ms_MY=Mencipta tugas Cron yang berjalan pada pelayan berganda secara serentak.
desc_ms_MY=Kluster Tugas Cron
longdesc_pl=Twórz zaplanowane zadania Cron, które zosatan± uruchomione na wielu serwerach równocze¶nie.
longdesc_ca=Crea treballs Cron planificats que s'executen en múltiples servidors simultàniament.

View File

@@ -18,3 +18,4 @@ longdesc_ms_MY=Menukar kata laluan serentak pada pelbagai sistem dalam kluster W
desc_ms_MY=Kluster Tukar Kata laluan
longdesc_de=&#196;ndert Passw&#246;rter auf multiplen Server gleichzeitig.
longdesc_pl=Zmieñ has³a na wielu serwerach w klastrze Webmina równocze¶nie.
longdesc_ca=Canvia contrasenyes en múltiples sistemes alhora d'un cluster Webmin.

View File

@@ -15,3 +15,4 @@ desc_ms_MY=Kluster arahan Shell
longdesc_ms_MY=Menjalankan arahan pada pelbagai pelayan serentak.
longdesc_de=F&#252;hrt Befehle auf multiplen Server gleichzeitig aus.
longdesc_pl=Uruchamiaj polecenia na wielu serwerach równocze¶nie.
longdesc_ca=Executa ordres alhora en múltiples sistemes.

View File

@@ -19,3 +19,4 @@ longdesc_ms_MY=Pasang RPMs, debian dan pakej Solaris ke pelbagai pelayan dari sa
desc_ms_MY=Kluster Pakej Software
longdesc_de=Installiert RPMs, Debian- und Solaris-Pakete &#252;ber mehrere Server aus einer Quelle.
longdesc_pl=Instaluj pakiety RPM, debian i Solaris na wielu serwerach z jednego ¼ród³a.
longdesc_ca=Instal·la paquets RPM, debian i solaris a través de múltiples servidors a partir d'un sol origen.

View File

@@ -17,3 +17,4 @@ desc_hu=Cluster felhaszn
longdesc_ms_MY=Mencipta, mengemaskini dan memadam pengguna dan grup di seluruh pelbagai pelayan. Tidak seperti NIS, setiap pelayan mempunyai fail passwd dan group sendiri yang dikemaskini secara jauh oleh modul ini.
desc_ms_MY=Kluster Pengguna dan Grup
longdesc_pl=Twórz, aktualizuj i usuwaj u¿ytkowników i grupy na wielu serwerach. Inaczej ni¿ w NIS, ka¿dy serwer ma w³asny plik has³a i grupy, który jest zdalnie aktualizowany przez ten modu³.
longdesc_ca=Crea, actualitza i suprimeix usuaris i grups a través de múltiples servidors. Contràriament a NIS, cada servidor té els seus propis fitxers de contrasenyes i grups, que s'actualitzen remotament amb aquest mòdul.

View File

@@ -17,3 +17,4 @@ desc_hu=Cluster Usermin szerverek
longdesc_ms_MY=Memasang dan menguruskan modul dan tema di seluruh pelayan Usermin.
desc_ms_MY=Kluster Pelayan Usermin
longdesc_pl=Instaluj i zarz±dzaj modu³ami oraz motywami na wszystkich serwerach Usermin.
longdesc_ca=Instal·la i gestiona mòduls i temes a través de múltiples servidors Usermin.

View File

@@ -16,3 +16,4 @@ desc_hu=Cluster Webmin szerverek
longdesc_ms_MY=Memasang dan menguruskan modul, tema, pengguna, grup dan tetapan kawalan capaian di seluruh pelayan Webmin.
desc_ms_MY=Kluster Pelayan Webmin
longdesc_pl=Instaluj i zarz±dzaj modu³ami, szablonami, u¿ytkownikami, grupami i kontrol± dostêpu na wszystkich serwerach Webmina.
longdesc_ca=Instal·la i gestiona mòduls, temes, usuaris, grups i paràmetres de control d'accés a través de múltiples servidors Webmin.

View File

@@ -32,3 +32,4 @@ longdesc_ms_MY=Pasang modul Perl baharu pada sistem anda, dan lihat apa yang sud
desc_ms_MY=Modul Perl
longdesc_de=Installiert neue Perl-Module auf Ihrem System, und zeigt die bereits Installierten an.
longdesc_pl=Instaluj nowe modu³y Perla i sprawd¼ jakie ju¿ s± zainstalowane.
longdesc_ca=Instal·la nous mòduls Perl al sistema i visualitza els que ja estan instal·lats.

View File

@@ -40,3 +40,4 @@ longdesc_ms_MY=Cipta, Ubah dan padam Tugas Cron.
desc_ms_MY=Tugas Cron Berjadual
longdesc_de=Erstellt, editiert und l&#246;scht Cron-Auftr&#228;ge.
longdesc_pl=Twórz, edytuj i usuwaj zadania Cron.
longdesc_ca=Crea, edita i suprimeix treballs Cron.

View File

@@ -297,6 +297,7 @@ else {
}
# read_opts_file(file)
# Read the file containing possible menu options for a command
sub read_opts_file
{
local @rv;
@@ -371,6 +372,12 @@ $cmd->{'args'} = [ ];
my ($i, $name);
for($i=0; defined($name = $in{"name_$i"}); $i++) {
if ($name) {
if ($in{"type_$i"} == 9 || $in{"type_$i"} == 12 ||
$in{"type_$i"} == 13 || $in{"type_$i"} == 14) {
$in{"opts_$i"} =~ /\|$/ || -r $in{"opts_$i"} ||
&error(&text('save_eopts', $i+1));
}
$in{"opts_$i"} =~ /:/ && &error(&text('save_eopts2', $i+1));
push(@{$cmd->{'args'}}, { 'name' => $name,
'desc' => $in{"desc_$i"},
'type' => $in{"type_$i"},

View File

@@ -3,7 +3,7 @@
# Display commands available for execution
require './custom-lib.pl';
&ui_print_header(undef, $text{'index_title'}, "", "intro", 1, 1);
&ui_print_header(undef, $module_info{'desc'}, "", "intro", 1, 1);
@cust = grep { &can_run_command($_) } &list_commands();
@cust = &sort_commands(@cust);

View File

@@ -77,6 +77,7 @@ save_eorder=L'ordenaci
save_etimeout=Hi falta el temps màxim d'espera o bé és invàlid
save_eusermin=Les ordres que s'executen en altres servidors no es poden executar des d'Usermin
save_eformat=El tipus MIME de sortida és invàlid
save_eopts=Hi falta el fitxer d'opcions per al paràmetre $1
run_err=No s'ha pogut executar l'ordre
run_ecannot=No tens permís per executar aquesta ordre

View File

@@ -126,6 +126,7 @@ save_ecmd=Kein Befehl angegeben
save_edesc=Keine Beschreibung angegeben
save_edir=Fehlendes oder ung&#252;ltiges Verzeichnis
save_eformat=Ung&#252;ltiger MIME-Typ Output
save_eopts=Fehlende Optionsdatei f&#252;r den Parameter $1
save_eorder=Die Auflistung auf der Hauptseite mu&#223; eine Nummer sein
save_err=Fehler beim Speichern des Befehls
save_etimeout=Fehlende oder ung&#252;ltige maximale Zeit, die auf Ausf&#252;hrung gewartet wird

View File

@@ -78,6 +78,7 @@ save_etimeout=Missing or invalid maximum time to wait
save_eusermin=Commands that run on other servers cannot be run from Usermin
save_eformat=Invalid output MIME type
save_eopts=Missing options file for parameter $1
save_eopts2=Options file or default value for parameter $1 cannot contain :
run_err=Failed to execute command
run_ecannot=You are not allowed to run this command

View File

@@ -37,3 +37,4 @@ longdesc_ms_MY=Buat butang untuk melaksanakan arahan yang biasa digunakan atau m
desc_ms_MY=Arahan suai langgan
longdesc_de=Erstellt Schaltfl&#228;chen zum Ausf&#252;hren von h&#228;ufig verwendeten Befehle oder bearbeitet Dateien auf Ihrem System.
longdesc_pl=Twórz przyciski do wykonywania czêsto u¿ywanych poleceñ lub edytowania plików w twoim systemie.
longdesc_ca=Crea botons per executar ordres utilitzades habitualment o editar fitxers del sistema.

View File

@@ -24,3 +24,4 @@ desc_ko_KR.UTF-8=NFS 공유
library=dfs-lib.pl
desc_hu.UTF-8=NFS Megosztások
desc_nl=NFS Files Delen
longdesc_ca=Edita les unitats compartides definides al fitxer /etc/dfs/dfstab.

View File

@@ -11,6 +11,15 @@ $in{'host'} || &error($text{'lookup_ehostname'});
$conf = &get_config();
@hosts = &find_recursive("host", $conf);
# Check to see if the host contains 6 hex bytes for a Mac address
if ($in{'host'} =~ /:|\-|\./) {
(my $justbytes = $in{'host'}) =~ s/[^A-Fa-f0-9]//g;
if ($justbytes =~ /^[0-9a-f]{12}$/i) {
# Treat this host as a mac address with arbitrary formatting
$in{'host'} = join(':', unpack("(A2)*", $justbytes) );
}
}
# Look for a match
%access = &get_module_acl();
foreach $h (@hosts) {

View File

@@ -34,3 +34,4 @@ longdesc_ms_MY=Mengurus perkongsian rangkaian, subnet, dan grup untuk ISC DHCPD.
desc_ms_MY=Pelayan DHCP
longdesc_de=Verwaltet freigegebene Netzwerke, Subnetze, Hosts und Gruppen f&#252;r ISC DHCPD.
longdesc_pl=Zarz±dzaj udostêpnianiem sieci, podsieci, hostów i grup dla ISC DHCPD.
longdesc_ca=Gestiona xarxes, subxarxes, hosts i grups compartits per DHCPD ISC.

View File

@@ -19,3 +19,4 @@ longdesc_ms_MY=Mengkonfigurasi Dovecot IMAP dan POP3 sebagai pelayan menarik mel
desc_ms_MY=Pelayan Dovecot IMAP/POP3
longdesc_de=Konfiguriert den Dovecot IMAP und POP3 Mail Abrufserver.
longdesc_pl=Konfiguracja Dovecot - serwera pobierania e-maili przez IMAP i POP3.
longdesc_ca=Configura el servidorde recuperació de correu IMAP i POP3 Dovecot.

View File

@@ -1,22 +1,22 @@
<header>amb o sense Autenticació</header>
<header>amb o sense Autenticació</header>
La primera columna d'aquest camp et permet seleccionar el tipus d'autenticació
d'aquesta exportació. Les opcions són:
La primera columna d'aquest camp et permet seleccionar el tipus d'autenticació
d'aquesta exportació. Les opcions són:
<dl>
<dt><b>sys</b>
<dd>Seguretat basada en NFS d'IP o xarxa al vell estil, que es fa complir
per a l'adreça IP client.<p>
per a l'adreça IP client.<p>
<dt><b>krb5</b>
<dd>Autenticació Kerberos (requereix que atnt el sistema client com el servidor
<dd>Autenticació Kerberos (requereix que atnt el sistema client com el servidor
tinguin Kerberos configurat).<p>
<dt><b>libkey</b>
<dd>El mecanisme de seguretat LIBKEY. <p>
<dt><b>spkm-3</b>
<dd>Mecanisme d'autenticació SPKM3. <p>
<dd>Mecanisme d'autenticació SPKM3. <p>
</dl>
<footer>

View File

@@ -1,6 +0,0 @@
<header>Pseudosistema de fitxers NFSv4 a exportar</header>
Per a les exportacions NFS versió 4, es pot utilitzar aquest camp per a introduir
un camí sota el qual apareixeran múltiples exportacions en ser visualitzades des del client.<p>
<footer>

View File

@@ -1,5 +1,5 @@
<header>Nivells de seguretat</header>
Aquest camp determina quins nivells de seguretat han d'utilitzar els clients. Es poden seleccionar múltiples nivells, i els preferits es provaran primer. <p>
Aquest camp determina quins nivells de seguretat han d'utilitzar els clients. Es poden seleccionar múltiples nivells, i els preferits es provaran primer. <p>
<footer>

View File

@@ -1,7 +1,7 @@
<header>Versió NFS</header>
<header>Versió NFS</header>
Aquest camp controla la versió del protocol NFS utilitzada per aquesta
exportació. Algunes característiques només estan disponibles per a exportacions
NFSv4, però això pot no estar suportat per sistemes clients més antics. <p>
Aquest camp controla la versió del protocol NFS utilitzada per aquesta
exportació. Algunes característiques només estan disponibles per a exportacions
NFSv4, però això pot no estar suportat per sistemes clients més antics. <p>
<footer>

View File

@@ -36,3 +36,4 @@ longdesc_ms_MY=Sunting fail perkongsian NFS yang dinyatakan dalam /etc/eksport
desc_ms_MY=NFS Eksport
longdesc_de=Bearbeitet NFS-Dateifreigaben, welche in /etc/exports definiert sind.
longdesc_pl=Edytuj udostêpnione pliki NFS zdefinowane w /etc/exports.
longdesc_ca=Edita les unitats compartides NFS definides a /etc/exports.

View File

@@ -36,3 +36,4 @@ desc_hu=Lemezpartici
longdesc_ms_MY=Mencipta dan mengubah partisyen SCSI setempat dan disk IDE pada Linux.
desc_ms_MY=Partisyen pada disk setempat
longdesc_de=Erstellt und Editiert Partitionen auf lokalen SCSI, IDE und SATA Laufwerken auf Linux.
longdesc_ca=Crea i edita les particions de discs locals SCSI, IDE i SATA a Linux.

View File

@@ -27,3 +27,4 @@ desc_hu=Levelek lek
longdesc_ms_MY=Konfigurasi program fetchmail yang popular secara automatik menarik mel dari pelayan yang lain.
desc_ms_MY=Fetchmail Menarik Mel
longdesc_pl=Konfiguracja popularnego programu fetchmail do automatycznego pobierania e-maili z innych serwerów
longdesc_ca=Configura el popular programa fetchmail per a recuperar automàticament el correu d'altres servidors.

View File

@@ -36,3 +36,4 @@ longdesc_ms_MY=Lihat, ubah dan ubah kebenaran pada fail dan direktori pada siste
desc_ms_MY=Java Pengurus Fail
longdesc_de=Zeigt, bearbeitet und &#228;ndert Berechtigungen f&#252;r Dateien und Verzeichnisse auf Ihrem System mit einem Windows-&#228;hnliche Dateimanager.
longdesc_pl=Wy秝ietlaj, edytuj i zmieniaj uprawnienia plik體 i katalog體 w menad縠rze wygl眃aj眂ym podobnie jak z systemu Windows
longdesc_ca=Visualitza, edita i canvia permisos de fitxers i directoris del sistema amb un gestor de fitxers tipus Windows.

48
filemin/chattr.cgi Normal file
View File

@@ -0,0 +1,48 @@
#!/usr/local/bin/perl
require './filemin-lib.pl';
&ReadParse();
get_paths();
my $recursive;
if ( $in{'recursive'} eq 'true' ) { $recursive = '-R'; }
else { $recursive = ''; }
my @errors;
if ( !$in{'label'} ) {
push @errors, "$text{'attr_label_error'}";
}
my $label = quotemeta("$in{'label'}");
$label =~ s/\\-/-/g;
$label =~ s/\\+//g;
$label =~ tr/a-zA-Z\-\+ //dc;
if ( scalar(@errors) > 0 ) {
print_errors(@errors);
}
else {
foreach my $file ( split( /\0/, $in{'name'} ) ) {
$file =~ s/\.\.//g;
&simplify_path($file);
if (
system_logged(
"chattr $recursive " . $label . " " . quotemeta("$cwd/$file")
) != 0
)
{
push @errors,
( html_escape($file) . " - $text{'attr_label_error_proc'}: $?" );
}
}
if ( scalar(@errors) > 0 ) {
print_errors(@errors);
}
else {
&redirect("index.cgi?path=$path");
}
}

47
filemin/chcon.cgi Normal file
View File

@@ -0,0 +1,47 @@
#!/usr/local/bin/perl
require './filemin-lib.pl';
&ReadParse();
get_paths();
my $recursive;
if ( $in{'recursive'} eq 'true' ) { $recursive = '-R'; }
else { $recursive = ''; }
my @errors;
if ( !$in{'label'} ) {
push @errors, "$text{'context_label_error'}";
}
if ( scalar(@errors) > 0 ) {
print_errors(@errors);
}
else {
foreach my $file ( split( /\0/, $in{'name'} ) ) {
$file =~ s/\.\.//g;
&simplify_path($file);
if (
system_logged(
"chcon $recursive "
. quotemeta( $in{'label'} ) . " "
. quotemeta("$cwd/$file")
) != 0
)
{
push @errors,
( html_escape($file)
. " - $text{'context_label_error_proc'}: $?" );
}
}
if ( scalar(@errors) > 0 ) {
print_errors(@errors);
}
else {
&redirect("index.cgi?path=$path");
}
}

View File

@@ -29,8 +29,10 @@ print &ui_table_start($text{'module_config'}, undef, 2);
print &ui_table_row($text{'config_columns_to_display'},
&ui_checkbox('columns', 'type', $text{'type'}, $config{'columns'} =~ /type/).
&ui_checkbox('columns', 'size', $text{'size'}, $config{'columns'} =~ /size/).
&ui_checkbox('columns', 'owner_user', $text{'owner_user'}, $config{'columns'} =~ /owner_user/).
&ui_checkbox('columns', 'owner_user', $text{'ownership'}, $config{'columns'} =~ /owner_user/).
&ui_checkbox('columns', 'permissions', $text{'permissions'}, $config{'columns'} =~ /permissions/).
(get_attr_status() ? &ui_checkbox('columns', 'attributes', $text{'attributes'}, $config{'columns'} =~ /attributes/) : undef).
(get_selinux_status() ? &ui_checkbox('columns', 'selinux', $text{'selinux'}, $config{'columns'} =~ /selinux/) : undef).
&ui_checkbox('columns', 'last_mod_time', $text{'last_mod_time'}, $config{'columns'} =~ /last_mod_time/)
);
print &ui_table_row($text{'config_per_page'}, ui_textbox("per_page", $config{'per_page'}, 80));

View File

@@ -7,6 +7,27 @@ use Encode qw(decode encode);
use File::Basename;
use POSIX;
sub get_attr_status {
return has_command('lsattr');
}
sub get_attr_command {
return 'lsattr -d ';
}
sub get_selinux_status {
# return 1;
return is_selinux_enabled();
}
sub get_selinux_command_type {
my $out = backquote_command("ls --help 2>&1 </dev/null");
return $out =~ /--scontext/ ? 1 : 0;
}
sub get_selinux_command {
return get_selinux_command_type() ? 'ls -d --scontext ' : 'ls -dmZ ';
}
sub get_paths {
%access = &get_module_acl();
@@ -124,28 +145,27 @@ sub print_interface {
# Set things up according to currently used theme
if ($current_theme eq 'authentic-theme' or $current_theme eq 'bootstrap') {
# Interface for Bootstrap 3 powered themes
# Set icons variables
$edit_icon = "<i class='fa fa-edit' alt='$text{'edit'}'></i>";
$rename_icon = "<i class='fa fa-font' title='$text{'rename'}'></i>";
$extract_icon = "<i class='fa fa-external-link' alt='$text{'extract_archive'}'></i>";
$goto_icon = "<i class='fa fa-arrow-right' alt='$text{'goto_folder'}'></i>";
# Add static files
print "<link rel=\"stylesheet\" type=\"text/css\" href=\"unauthenticated/css/style.css\" />";
print "<script type=\"text/javascript\" src=\"unauthenticated/js/main.js\"></script>";
print "<script type=\"text/javascript\" src=\"unauthenticated/js/chmod-calculator.js\"></script>";
print "<script type=\"text/javascript\" src=\"unauthenticated/js/dataTables.bootstrap.js\"></script>";
print "<script type=\"text/javascript\" src=\"unauthenticated/js/bootstrap-hover-dropdown.min.js\"></script>";
print "<link rel=\"stylesheet\" type=\"text/css\" href=\"unauthenticated/css/style.css\" />";
print "<link rel=\"stylesheet\" type=\"text/css\" href=\"unauthenticated/css/dataTables.bootstrap.css\" />";
if ($current_theme eq 'bootstrap') {
init_datatables();
}
# Set "root" icon
if($base eq '/') {
$root_icon = "<i class='fa fa-hdd-o'></i>";
} else {
$root_icon = "~";
}
# Breadcrumbs
print "<ol class='breadcrumb pull-left'><li><a href='index.cgi?path='>$root_icon</a></li>";
my @breadcr = split('/', $path);
@@ -157,6 +177,7 @@ sub print_interface {
&html_escape($breadcr[$i])."</a></li>";
}
print "</ol>";
# And toolbar
if($userconfig{'menu_style'}) {
print_template("unauthenticated/templates/menu.html");
@@ -173,6 +194,7 @@ sub print_interface {
$rename_icon = "<img src='images/icons/quick/rename.png' alt='$text{'rename'}' />";
$extract_icon = "<img src='images/icons/quick/extract.png' alt='$text{'extract_archive'}' />";
$goto_icon = "<img src='images/icons/quick/go-next.png' alt='$text{'goto_folder'}'";
# Add static files
$head = "<link rel=\"stylesheet\" type=\"text/css\" href=\"unauthenticated/css/style.css\" />";
$head.= "<script type=\"text/javascript\" src=\"unauthenticated/jquery/jquery.min.js\"></script>";
@@ -183,6 +205,7 @@ sub print_interface {
$head.= "<link rel=\"stylesheet\" type=\"text/css\" href=\"unauthenticated/dropdown/fg.menu.css\" />";
$head.= "<script type=\"text/javascript\" src=\"unauthenticated/dropdown/fg.menu.js\"></script>";
print $head;
# Set "root" icon
if($base eq '/') {
$root_icon = "<img src=\"images/icons/quick/drive-harddisk.png\" class=\"hdd-icon\" />";
@@ -221,6 +244,7 @@ sub print_interface {
}
}
print "</div>";
# And toolbar
print_template("unauthenticated/templates/legacy_quicks.html");
print_template("unauthenticated/templates/legacy_dialogs.html");
@@ -240,8 +264,6 @@ sub print_interface {
}
print "<div class='total'>" . &text($info_total, scalar @files, scalar @folders) . "</div>";
# use Data::Dumper;
# print Dumper(\%allowed_for_edit);
# Render current directory entries
print &ui_form_start("", "post", undef, "id='list_form'");
@@ -249,13 +271,15 @@ sub print_interface {
'<input id="select-unselect" type="checkbox" onclick="selectUnselect(this)" />',
''
);
push @ui_columns, $text{'name'};
push @ui_columns, $text{'type'} if($userconfig{'columns'} =~ /type/);
push @ui_columns, $text{'actions'};
push @ui_columns, $text{'size'} if($userconfig{'columns'} =~ /size/);
push @ui_columns, $text{'owner_user'} if($userconfig{'columns'} =~ /owner_user/);
push @ui_columns, $text{'permissions'} if($userconfig{'columns'} =~ /permissions/);
push @ui_columns, $text{'last_mod_time'} if($userconfig{'columns'} =~ /last_mod_time/);
push @ui_columns, ('<span data-head-name>' . $text{'name'} . '</span>');
push @ui_columns, ('<span data-head-type>' . $text{'type'} . '</span>') if($userconfig{'columns'} =~ /type/);
push @ui_columns, ('<span data-head-actions>' . $text{'actions'} . '</span>');
push @ui_columns, ('<span data-head-size>' . $text{'size'} . '</span>') if($userconfig{'columns'} =~ /size/);
push @ui_columns, ('<span data-head-owner_user>' . $text{'ownership'} . '</span>') if($userconfig{'columns'} =~ /owner_user/);
push @ui_columns, ('<span data-head-permissions>' . $text{'permissions'} . '</span>') if($userconfig{'columns'} =~ /permissions/);
push @ui_columns, ('<span data-head-attributes>' . $text{'attributes'} . '</span>') if(get_attr_status() && $userconfig{'columns'} =~ /attributes/);
push @ui_columns, ('<span data-head-selinux>' . $text{'selinux'} . '</span>') if(get_selinux_status() && $userconfig{'columns'} =~ /selinux/);
push @ui_columns, ('<span data-head-last_mod_time>' . $text{'last_mod_time'} . '</span>') if($userconfig{'columns'} =~ /last_mod_time/);
print &ui_columns_start(\@ui_columns);
#foreach $link (@list) {
@@ -263,6 +287,8 @@ sub print_interface {
if ($count > scalar(@list)) { last; }
my $class = $count & 1 ? "odd" : "even";
my $link = $list[$count - 1][0];
my $selinux;
my $attributes;
$link =~ s/\Q$cwd\E\///;
$link =~ s/^\///g;
$vlink = html_escape($link);
@@ -274,12 +300,22 @@ sub print_interface {
my $type = $list[$count - 1][14];
$type =~ s/\//\-/g;
my $img = "images/icons/mime/$type.png";
unless (-e $img) { $img = "images/icons/mime/unknown.png"; }
$size = &nice_size($list[$count - 1][8]);
$user = getpwuid($list[$count - 1][5]) ? getpwuid($list[$count - 1][5]) : $list[$count - 1][5];
$group = getgrgid($list[$count - 1][6]) ? getgrgid($list[$count - 1][6]) : $list[$count - 1][6];
$permissions = sprintf("%04o", $list[$count - 1][3] & 07777);
if(get_selinux_status() && $userconfig{'columns'} =~ /selinux/) {
$selinux = $list[$count - 1][17];
}
if(get_attr_status() && $userconfig{'columns'} =~ /attributes/) {
$attributes = $list[$count - 1][18];
}
$mod_time = POSIX::strftime('%Y/%m/%d - %T', localtime($list[$count - 1][10]));
$actions = "<a class='action-link' href='javascript:void(0)' onclick='renameDialog(\"$vlink\")' title='$text{'rename'}' data-container='body'>$rename_icon</a>";
@@ -339,6 +375,8 @@ sub print_interface {
push @row_data, $size if($userconfig{'columns'} =~ /size/);
push @row_data, $user.':'.$group if($userconfig{'columns'} =~ /owner_user/);
push @row_data, $permissions if($userconfig{'columns'} =~ /permissions/);
push @row_data, $attributes if(get_attr_status() && $userconfig{'columns'} =~ /attributes/);
push @row_data, $selinux if(get_selinux_status() && $userconfig{'columns'} =~ /selinux/);
push @row_data, $mod_time if($userconfig{'columns'} =~ /last_mod_time/);
print &ui_checked_columns_row(\@row_data, "", "name", $vlink);
@@ -348,70 +386,6 @@ sub print_interface {
print &ui_form_end();
}
sub init_datatables {
my ($a, $b, $c);
$a = '0, 1, 3';
$b = '4';
$c = '';
if ($userconfig{'columns'} =~ /type/) {
$a = '0, 1, 4';
$b = '5';
}
if ($userconfig{'columns'} =~ /size/) {
$c = '{ "type": "file-size", "targets": [' . $b . '] },';
}
if($userconfig{'disable_pagination'}) {
$bPaginate = 'false';
} else {
$bPaginate = 'true';
}
print "<script>";
print "\$( document ).ready(function() {";
print "\$.fn.dataTableExt.sErrMode = 'throw';";
print "\$('#list_form > table').dataTable({";
print "\"order\": [],";
print "\"aaSorting\": [],";
print "\"bDestroy\": true,";
print "\"bPaginate\": $bPaginate,";
print " \"fnDrawCallback\": function(oSettings) {
if (oSettings.fnRecordsTotal() <= oSettings._iDisplayLength) {
\$('.dataTables_paginate').hide();
} else {
\$('.dataTables_paginate').show();
}
},";
print " \"initComplete\": function() {
\$('div.dataTables_filter input').val('').trigger('keyup');
\$('div.dataTables_filter input').focus();
\$(document).on('keydown', function (event) {
var keycode = event.keyCode ? event.keyCode : event.which;
if (!\$('input').is(':focus') && !\$('select').is(':focus') && !\$('textarea').is(':focus')) {
if (keycode === 39) {
\$('.paginate_button.next').trigger('click');
}
if (keycode === 37) {
\$('.paginate_button.previous').trigger('click');
}
}
});
},";
print "\"bInfo\": false,";
print "\"destroy\": true,";
print "\"oLanguage\": {";
print "\"sSearch\": \" \"";
print "},";
print "\"columnDefs\": [ { \"orderable\": false, \"targets\": [$a] }, $c ],";
print "\"bStateSave\": true,";
print "\"iDisplayLength\": 50,";
print "});";
print "\$(\"form\").on('click', 'div.popover', function() {";
print "\$(this).prev('input').popover('hide');";
print "});";
print "});";
print "</script>";
}
sub get_bookmarks {
$confdir = "$remote_user_info[7]/.filemin";
if(!-e "$confdir/.bookmarks") {
@@ -441,4 +415,3 @@ sub get_paste_buffer_file
}
1;

Binary file not shown.

After

Width:  |  Height:  |  Size: 734 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

View File

@@ -1,14 +1,12 @@
#!/usr/local/bin/perl
# File manager written in perl
#$unsafe_index_cgi = 1;
require './filemin-lib.pl';
use lib './lib';
#use File::Basename;
use File::MimeInfo;
&ReadParse();
get_paths();
unless (opendir ( DIR, $cwd )) {
@@ -17,8 +15,10 @@ unless (opendir ( DIR, $cwd )) {
} else {
&ui_print_header(undef, $module_info{'name'}, "", undef, 0 , 0, 0, "<a href='config.cgi?path=$path' data-config-pagination='$userconfig{'per_page'}'>$text{'module_config'}</a>");
##########################################
#---------LET DA BRAINF###ING BEGIN----------
my $setype = get_selinux_command_type();
my %secontext;
my %attributes;
# Push file names with full paths to array, filtering out "." and ".."
@list = map { &simplify_path("$cwd/$_") } grep { $_ ne '.' && $_ ne '..' } readdir(DIR);
closedir(DIR);
@@ -36,8 +36,29 @@ unless (opendir ( DIR, $cwd )) {
my %hash = map { $_, 1 } @tmp_list;
@list = keys %hash;
}
# List attributes
if ( $userconfig{'columns'} =~ /attributes/ && get_attr_status() ) {
my $command = get_attr_command() . join( ' ', map { quotemeta("$_") } @list );
my $output = `$command`;
my @attributesArr =
map { [ split( /\s+/, $_, 2 ) ] } split( /\n/, $output );
%attributes = map { $_->[1] => ('<span data-attributes="x">' . $_->[0] . '</span>') } @attributesArr;
}
# List security context
if ( $userconfig{'columns'} =~ /selinux/ && get_selinux_status() ) {
my $command = get_selinux_command() . join( ' ', map { quotemeta("$_") } @list );
my $output = `$command`;
( !$setype && ( $output =~ s/\n//g, $output =~ s/,\s/,/g ) );
my $delimiter = ( $setype ? '\n' : ',' );
my @searray =
map { [ split( /\s+/, $_, 2 ) ] } split( /$delimiter/, $output );
%secontext = map { $_->[1] => ($_->[0] eq "?" ? undef : ('<span data-attributes="x">' . $_->[0] . '</span>') ) } @searray;
}
# Get info about directory entries
@info = map { [ $_, stat($_), &mimetype($_), -d $_ ] } @list;
@info = map { [ $_, lstat($_), &mimetype($_), -d, -l $_, $secontext{$_}, $attributes{$_} ] } @list;
# Filter out folders
@folders = map {$_} grep {$_->[15] == 1 } @info;
@@ -53,9 +74,6 @@ unless (opendir ( DIR, $cwd )) {
undef(@list);
push @list, @folders, @files;
#########################################
print_interface();
&ui_print_footer("/", $text{'index'});
}

View File

@@ -1,4 +1,4 @@
index=Índex
index=a l'índex
error_opendir=Error en obrir el directori
error_creating_conf=Error en crear el directori de contiguració
select_all=Selecciona-ho Tot
@@ -6,7 +6,7 @@ invert_selection=Inverteix la Selecci
copy_selected=Copia la Selecció
cut_selected=Retalla la Selecció
paste=Enganxa
create_folder=Crea una Carpeta
create_folder=Crea un Directori
create_file=Crea un Fitxer
compress_selected=Comprimeix la Selecció
chmod_selected=Executa <tt>chmod</tt> sobre la Selecció
@@ -15,7 +15,7 @@ remove_selected=Elimina la Selecci
browse_for_upload=Explora per a Pujar
upload_files=Puja Fitxers
get_from_url=Obtingues d'un URL
bookmark_folder=Marca la carpeta actual com a preferida
bookmark_folder=Marca el directori actual com a preferit
name=Nom
type=Tipus
actions=Accions
@@ -32,21 +32,21 @@ save=Desa
save_close=Desa i tanca
delete=Suprimeix
save_file=Desa el fitxer
previous_page=pàgina anterior
previous_page=a la pàgina anterior
count_uploads=fixer(s) selecccionats per pujar
error_title=Error!!!
warning_title=Atenció!!!
nothing_selected=No hi ha res seleccionat
error_load_template=Error en carregar el fitxer de plantilla
create=Crea
new_folder_name=Nom de la nomva carpeta
new_folder_name=Nom del nou directori
new_file_name=Nom del nou fitxer
new_name=Nou nom
dialog_ok=Bé
dialog_cancel=Cancel·la
archive_name=Nom de l'arxiu
dialog_compress=Comprimeix
about_to_delete=Estàs a punt de suprimir els fitxers següent:
about_to_delete=Estàs a punt de suprimir els següents elements:
are_you_sure=Segur que ho vols fer?
user_name=Usuari
group_name=Grup
@@ -90,18 +90,18 @@ error_opening_file_for_writing=No s'ha pogut obrir el fitxer per escriure-hi:
error_writing_file=Error en gravar el fitxer:
error_numeric=ha de ser numèric!
error_saving_file=Error en desar el fitxer
hint_copy=Copia els fitxers i les carpetes seleccionades al buffer
hint_cut=Retalla els fitxers i les carpetes seleccionades al buffer
hint_paste=Enganxa els fitxers i carpetes del buffer al directori actual
hint_create_folder=Crea una nova carpeta al directori actual
hint_copy=Copia els fitxers i directoris seleccionats al buffer
hint_cut=Retalla els fitxers i directoris seleccionats al buffer
hint_paste=Enganxa els fitxers i directoris del buffer al directori actual
hint_create_folder=Crea un nou directori al directori actual
hint_create_file=Crea un nou fitxer al directori actual
hint_compress=Comprimeix els fitxers i carpetes seleccionats a un arxiu tar.gz
hint_chmod=Canvia els permisos dels fitxers i carpetes seleccionats
hint_chown=Canvia el propietari dels fitxers i carpetes seleccionats
hint_remove=Elimina els fitxers i carpetes seleccionats
hint_compress=Comprimeix els fitxers i directoris seleccionats a un arxiu tar.gz
hint_chmod=Canvia els permisos dels fitxers i directoris seleccionats
hint_chown=Canvia el propietari dels fitxers i directoris seleccionats
hint_remove=Elimina els fitxers i directoris seleccionats
hint_upload=Puja els fitxers al directori actual
hint_from_url=Obté el fitxer d'un URL remot
provide_folder_name=Proporciona el nom de la carpeta
provide_folder_name=Proporciona el nom del directori
provide_file_name=Proporciona el nom del fitxer
provide_user_name=Proporciona el nom de l'usuari
provide_group_name=Proporciona el nom del grup
@@ -128,7 +128,7 @@ search_label=Consulta de cerca
search_go=Cerca
search_results=Resultats de la cerca per a
search_insensitive=Cerca insensitiva a caixa
goto_folder=Ves a la carpeta contenidora
goto_folder=Ves al directori contenidor
module_config=Configuració del mòdul
config_columns_to_display=Columnes a mostrar
config_per_page=Ítems a mostrar per pàgina (només per a temes antics)
@@ -142,4 +142,8 @@ menu_tools=Eines
menu_bookmarks=Preferits
notallowed=No tens permís per accedir a $1. Els directoris permesos són: $2
error_upload_emax=El fitxer pujat és més gran que el límit de $1
info_total=Total: $1 fitxers i $2 carpetes
info_total1=Total: $1 fitxer i $2 directori
info_total2=Total: $1 fitxers i $2 directori
info_total3=Total: $1 fitxer i $2 directoris
info_total4=Total: $1 fitxers i $2 directoris

View File

@@ -141,3 +141,19 @@ info_total1=Total: $1 file and $2 folder
info_total2=Total: $1 files and $2 folder
info_total3=Total: $1 file and $2 folders
info_total4=Total: $1 files and $2 folders
chcon_selected=Chcon Selected
chattr_selected=Chattr Selected
selinux=Security context
attributes=Attributes
context_label=Context to apply
context_label_error=Security context can not be blank
context_label_error_proc=Failed to change security context
attr_label=Attributes to apply
attr_label_error=Attributes must be specified
attr_label_error_proc=Failed to change attributes
ownership=Ownership

View File

@@ -1,12 +1,23 @@
about_to_delete=Sie sind dabei folgende Elemente zu l&#246;schen:
acl_allowed_paths=Erlaube Zugriff auf Verzeichnisse
acl_bytes=bytes
acl_epath=Pfad $1 existiert nicht
acl_euser=Ausgew&#228;hter Unix Benutzer existiert nicht!
acl_max=Die maximale Gr&#246;&#223;e f&#252;r hochgeladene Dateien
acl_same=Gleiche wie Webmin Login
acl_unlimited=Unlimitiert
acl_user=Spezifischer Unix Benutzer
acl_work_as=Erlaube Dateien als Unix Benutzer
actions=Aktionen
archive_name=Archiv-Name
are_you_sure=Sind Sie sich sicher?
bookmark_folder=Lesezeichen des aktuellen Verzeichnisses setzen
chmod_additional=Zus&#228;tzlich
chmod_all=Alle (rekursiv)
chmod_apply_to=Anwenden an
chmod_dir_and_its_files=Ausgew&#228;hlte Dateien und Verzeichnisse und Dateien in ausgew&#228;hlten Verzeichnissen
chmod_dir_and_subs=Ausgew&#228;hlte Verzeichnisse und Unterverzeichnisse
chmod_dir_only=Nur ausgew&#228;hlte Verzeichnisse und Dateien
chmod_execute=Ausf&#252;hren
chmod_group=Gruppe
chmod_others=Andere
@@ -19,25 +30,70 @@ chown_selected=Chmod w&#228;hlen
compress_selected=Komprimiere ausgew&#228;hlte
config_bookmarks=Bookmarks
config_columns_to_display=Spalten zu angezeigen
config_disable_pagination=Deaktiviert Paginierung (nur f&#252;r Authentic Theme-Benutzer)
config_per_page=Artikel pro Seite zum anzeigen (nur f&#252;r alte Themes)
copy_selected=Kopiere Ausgew&#228;hltes
count_uploads=Datei(en) ausgew&#228;hlt zum hochladen
create=Erstellen
create_file=Erstelle Datei
create_folder=Erstelle Ordner
cut_selected=Schneide Ausgew&#228;hltes aus
delete=L&#246;sche
dialog_cancel=Abbrechen
dialog_change=&#196;ndern
dialog_compress=Komprimieren
dialog_download=Download
dialog_file_url=URL der Datei zum Download
dialog_ok=OK
dialog_recursive=Rekursiv
dialog_user_name=Entferne Server Benutzername (falls einer ben&#246;tigt wird)
dialog_user_pass=Entferne Server Passwort (falls eins ben&#246;tigt wird)
edit=Editieren
edit_file=Editiere Datei
error_archive_type_not_supported=Archivtyp wird bisher nicht unterst&#252;tzt
error_chmod=Fehlgeschlagen Rechte zu &#228;ndern
error_chown=Fehlgeschlagen Eigent&#252;mer zu wechseln
error_copy=Kopieren fehlgeschlagen mit Fehler:
error_create=fehlgeschlagen zu erstellen:
error_creating_conf=Fehler beim Erstellen des Konfigurations-Verzeichnis
error_cut=Verschieben fehlgeschlagen mit Fehler:
error_delete=nicht m&#246;glich zu l&#246;schen
error_exists=existiert bereits, &#252;berspringe
error_group_not_found=Gruppe existiert nicht auf diesem System
error_invalid_uri=Fehler: keine g&#252;ltige URL zur Verf&#252;gung gestellt
error_load_template=Fehler laden Template Datei
error_numeric=Muss numerisch sein!
error_opendir=Fehler beim &#214;ffnen des Verzeichnis
error_opening_file_for_writing=Kann Datei nicht zum schreiben &#246;ffnen
error_pasting_nonsence=Einf&#252;gen in das selbe Verzeichnis macht keinen Sinn
error_rename=Fehlgeschlagen das Umbenennen
error_saving_file=Fehler beim Speichern der Datei
error_title=Fehler!!!
error_upload_emax=Hochzuladende Datei ist gr&#246;&#223;er als das Limit von $1
error_user_not_found=Benutzer nicht auf diesem System gefunden
error_writing_file=Fehler beim Schreiben von Datei:
extract_archive=Archive extrahieren
file_already_exists=existiert bereits in
files_ready_for_upload=Zeige ausgew&#228;hlte Dateien an
get_from_url=Erhalte von URL
goto_folder=Gehe zu beinhaltetes Verzeichnis
group_name=Gruppen-Name
hint_compress=Komprimiere ausgew&#228;hlte Dateien und Verzeichnisse in tar.gz-Archiv
hint_copy=Kopiere ausgew&#228;hlte Dateien und Verzeichnisse zum Puffer
hint_create_file=Erstelle neue Datei im aktuellem Pfad
hint_create_folder=Erzeuge neues Verzeichnis im aktuellem Pfad
hint_from_url=Erhalte Datei von entfernter URL
hint_paste=F&#252;ge Dateien und Verzeichnisse vom Puffer ein
hint_remove=Entferne ausgew&#228;hlte Dateien und Verzeichnisse
hint_upload=Hochladen von Dateien in das aktuelle Verzeichnis
http_downloading=Herunterladen
index=Index
info_total=Gesamt: $1 Dateien und $2 Ordner
info_total1=Total: $1 Datei und $2 Verzeichnis
info_total2=Total: $1 Dateien und $2 Verzeichnis
info_total3=Total: $1 Datei und $2 Verzeichnisse
info_total4=Total: $1 Dateien und $2 Verzeichnisse
invert_selection=Auswahl umkehren
last_mod_time=Zeitpunkt der letzten &#196;nderung
menu_bookmarks=Bookmarks
menu_edit=Editieren
menu_file=Datei
@@ -47,20 +103,36 @@ name=Name
new_file_name=Neuer Datei-Name
new_folder_name=Neuer Ordner-Name
new_name=Neuer Name
no_bookmarks=Keine Bookmarks bisher
notallowed=Sie sind nicht berechtigt auf $1 zuzugreifen. Erlaubte Verzeichnisse sind : $2
nothing_selected=Nichts ausgew&#228;hlt
owner_group=Eigent&#252;mer-Gruppe
owner_user=Eigent&#252;mer-Benutzer
paste=Einf&#252;gen
permissions=Rechte
previous_page=vorherige Seite
provide_file_name=Vergebe Dateiname
provide_folder_name=Vergebe Verzeichnisname
provide_group_name=Vergebe Gruppenname
provide_new_file_name=Vergebe neuen Dateiname
provide_search_query=Gebe Suchanfrage
provide_url=Gebe URL der entfernten Datei an
provide_user_name=Provider Benutzername
refresh=Aktualisieren
remove_selected=L&#246;sche Ausgew&#228;hltes
rename=Umbenennen
save=Speichern
save_close=Speichern und schlie&#223;en
save_file=Speichere Datei
search=Suche
search_go=Finden
search_insensitive=Gro&#223;- und Kleinschreibung Suche
search_label=Suchanfrage
search_results=Suchresultate f&#252;r
select_all=Alle w&#228;hlen
size=Gr&#246;&#223;e
type=Typ
upload_files=Dateien hochladen
uploading=Hochladen, bitte warten...
user_name=Benutzername
warning_title=Warnung!!!

View File

@@ -135,4 +135,20 @@ menu_file=Datei
menu_edit=Bearbeite
menu_tools=Werkzeuge
menu_bookmarks=Lesezeichen
notallowed=Sie haben keine Erlaubnis, auf $1 zuzugreifen. Die erlaubten Verzeichnisse sind: $2
notallowed=Sie haben keine Erlaubnis, auf $1 zuzugreifen. Die erlaubten Verzeichnisse sind: $2
chcon_selected=Chcon Selected
chattr_selected=Chattr Selected
selinux=Security context
attributes=Attributes
context_label=Context to apply
context_label_error=Security context can not be blank
context_label_error_proc=Failed to change security context
attr_label=Attributes to apply
attr_label_error=Attributes must be specified
attr_label_error_proc=Failed to change attributes
ownership=Ownership

View File

@@ -70,7 +70,7 @@ dialog_file_url=URL of file to download
dialog_user_name=Remote server username(if any required)
dialog_user_pass=Remote server password(if any required)
dialog_download=Download
error_invalid_uri=Error: No valid URL supllied!!!
error_invalid_uri=Error: No valid URL supplied!!!
file_already_exists=already exists in
files_ready_for_upload=View selected files
errors_occured=Following errors occured while performing operation
@@ -131,7 +131,7 @@ search_insensitive=Case insensitive search
goto_folder=Go to containing directory
module_config=Module configuration
config_columns_to_display=Columns to display
config_per_page=Items to display per page(for old themes only)
config_per_page=Items to display per page (for old themes only)
config_disable_pagination=Disable pagination (for Authentic Theme users only)
config_toolbar_style=Set toolbar style to menu-like view,<br>with dropdowns ... and cookies (for Authentic Theme users only)
config_bookmarks=Bookmarks

View File

@@ -6,24 +6,28 @@ invert_selection=Invert Selection
copy_selected=Copy Selected
cut_selected=Cut Selected
paste=Paste
create_folder=Create Folder
create_folder=Create Directory
create_file=Create File
compress_selected=Compress Selected
chmod_selected=Chmod Selected
chown_selected=Chown Selected
chcon_selected=Chcon Selected
chattr_selected=Chattr Selected
remove_selected=Remove Selected
browse_for_upload=Browse for Upload
upload_files=Upload Files
get_from_url=Get from URL
bookmark_folder=Bookmark current folder
bookmark_folder=Bookmark current directory
name=Name
type=Type
actions=Actions
size=Size
owner_user=Owner User
owner_group=Owner Group
owner_user=Owner user
owner_group=Owner group
permissions=Permissions
last_mod_time=Last Modification Time
selinux=Security context
attributes=Attributes
last_mod_time=Last modification time
rename=Rename
edit=Edit
extract_archive=Extract Archive
@@ -34,20 +38,26 @@ delete=Delete
save_file=Save file
previous_page=previous page
count_uploads=file(s) selected for upload
error_title=Error!!!
warning_title=Warning!!!
error_title=Error!
warning_title=Warning!
nothing_selected=Nothing selected
error_load_template=Error loading template file
create=Create
new_folder_name=New folder name
new_folder_name=New directory name
new_file_name=New file name
new_name=New name
dialog_ok=OK
dialog_cancel=Cancel
archive_name=Archive name
dialog_compress=Compress
about_to_delete=You`re about to delete following items:
about_to_delete=You're about to delete following items:
are_you_sure=Are you sure?
context_label=Context to apply
context_label_error=Security context can not be blank
context_label_error_proc=Failed to change security context
attr_label=Attributes to apply
attr_label_error=Attributes must be specified
attr_label_error_proc=Failed to change attributes
user_name=User name
group_name=Group name
dialog_change=Change
@@ -70,7 +80,7 @@ dialog_file_url=URL of file to download
dialog_user_name=Remote server username(if any required)
dialog_user_pass=Remote server password(if any required)
dialog_download=Download
error_invalid_uri=Error: No valid URL supllied!!!
error_invalid_uri=Error: No valid URL supplied!
file_already_exists=already exists in
files_ready_for_upload=View selected files
errors_occured=Following errors occured while performing operation
@@ -87,21 +97,21 @@ error_user_not_found=user not found on this system
error_group_not_found=group does not exist on this system
error_archive_type_not_supported= archive type not supported yet
error_opening_file_for_writing=Could not open file for writing:
error_writing_file=Error writing file:
error_writing_file=Error writing file:
error_numeric=must be numeric!
error_saving_file=Error saving file
hint_copy=Copy selected files and folders to buffer
hint_cut=Cut selected files and folders to buffer
hint_paste=Paste files and folders from buffer to current directory
hint_create_folder=Create new folder in the current directory
hint_copy=Copy selected files and directories to buffer
hint_cut=Cut selected files and directories to buffer
hint_paste=Paste files and directories from buffer
hint_create_folder=Create new directory in the current path
hint_create_file=Create new file in the current directory
hint_compress=Compress selected files and folders to tar.gz archive
hint_chmod=Change permissions for selected files and folders
hint_chown=Change owner of selected files and folders
hint_remove=Remove selected files and folders
hint_compress=Compress selected files and directories to tar.gz archive
hint_chmod=Change permissions for selected files and directories
hint_chown=Change owner of selected files and directories
hint_remove=Remove selected files and directories
hint_upload=Upload files to the current directory
hint_from_url=Get file from remote URL
provide_folder_name=Provide folder name
provide_folder_name=Provide directory name
provide_file_name=Provide file name
provide_user_name=Provide user name
provide_group_name=Provide group name
@@ -128,10 +138,10 @@ search_label=Search query
search_go=Find
search_results=Search results for
search_insensitive=Case insensitive search
goto_folder=Go to containing folder
goto_folder=Go to containing directory
module_config=Module configuration
config_columns_to_display=Columns to display
config_per_page=Items to display per page(for old themes only)
config_per_page=Items to display per page (for old themes only)
config_disable_pagination=Disable pagination (for Authentic Theme users only)
config_toolbar_style=Set toolbar style to menu-like view,<br>with dropdowns ... and cookies (for Authentic Theme users only)
config_bookmarks=Bookmarks
@@ -142,4 +152,10 @@ menu_tools=Tools
menu_bookmarks=Bookmarks
notallowed=You are not allowed to access $1. The allowed directories are : $2
error_upload_emax=Uploaded file is larger than the limit of $1
info_total=Total: $1 files and $2 folders
info_total1=Total: $1 file and $2 directory
info_total2=Total: $1 files and $2 directory
info_total3=Total: $1 file and $2 directories
info_total4=Total: $1 files and $2 directories
ownership=Ownership

View File

@@ -143,3 +143,19 @@ upload_files=Last opp filer
uploading=Laster opp, vennligst vent...
user_name=Brukernavn
warning_title=Advarsel!!!
chcon_selected=Chcon Selected
chattr_selected=Chattr Selected
selinux=Security context
attributes=Attributes
context_label=Context to apply
context_label_error=Security context can not be blank
context_label_error_proc=Failed to change security context
attr_label=Attributes to apply
attr_label_error=Attributes must be specified
attr_label_error_proc=Failed to change attributes
ownership=Ownership

View File

@@ -133,3 +133,19 @@ uploading=Загрузка, пожалуйста подождите...
user_name=Имя пользователя
warning_title=Внимание!!!
info_total=Всего: $1 файлов и $2 папок
chcon_selected=Chcon Selected
chattr_selected=Chattr Selected
selinux=Security context
attributes=Attributes
context_label=Context to apply
context_label_error=Security context can not be blank
context_label_error_proc=Failed to change security context
attr_label=Attributes to apply
attr_label_error=Attributes must be specified
attr_label_error_proc=Failed to change attributes
ownership=Ownership

View File

@@ -4,3 +4,5 @@ name=File Manager
usermin=1
desc_no=Filbehandling
desc=File Manager
desc_ca=Gestor de Fitxers
longdesc_ca=Gestor de fitxers lleuger i ràpid escrit en perl.

View File

@@ -1,372 +0,0 @@
div.dataTables_length label {
font-weight: normal;
text-align: left;
white-space: nowrap;
}
div.dataTables_length select {
width: 75px;
display: inline-block;
}
div.dataTables_filter {
text-align: right;
}
div.dataTables_filter label {
font-weight: normal;
white-space: nowrap;
text-align: left;
}
div.dataTables_filter input {
margin-left: 0.5em;
display: inline-block;
width: auto;
}
div.dataTables_info {
padding-top: 8px;
white-space: nowrap;
}
div.dataTables_paginate {
margin: 0;
white-space: nowrap;
text-align: right;
}
div.dataTables_paginate ul.pagination {
margin: 2px 0;
white-space: nowrap;
}
@media screen and (max-width: 767px) {
div.dataTables_wrapper > div.row > div,
div.dataTables_length,
div.dataTables_filter,
div.dataTables_info,
div.dataTables_paginate {
text-align: center;
}
div.DTTT {
margin-bottom: 0.5em;
}
}
table.dataTable td,
table.dataTable th {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
table.dataTable {
clear: both;
margin-top: 6px !important;
margin-bottom: 6px !important;
max-width: none !important;
}
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
cursor: pointer;
position: relative;
}
table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:after {
position: absolute;
top: 8px;
right: 8px;
display: block;
font-family: 'Glyphicons Halflings';
opacity: 0.5;
}
table.dataTable thead .sorting:after {
opacity: 0.2;
content: "\e150"; /* sort */
}
table.dataTable thead .sorting_asc:after {
content: "\e155"; /* sort-by-attributes */
}
table.dataTable thead .sorting_desc:after {
content: "\e156"; /* sort-by-attributes-alt */
}
div.dataTables_scrollBody table.dataTable thead .sorting:after,
div.dataTables_scrollBody table.dataTable thead .sorting_asc:after,
div.dataTables_scrollBody table.dataTable thead .sorting_desc:after {
display: none;
}
table.dataTable thead .sorting_asc_disabled:after,
table.dataTable thead .sorting_desc_disabled:after {
color: #eee;
}
table.dataTable thead > tr > th {
padding-right: 30px;
}
table.dataTable th:active {
outline: none;
}
/* Condensed */
table.dataTable.table-condensed thead > tr > th {
padding-right: 20px;
}
table.dataTable.table-condensed thead .sorting:after,
table.dataTable.table-condensed thead .sorting_asc:after,
table.dataTable.table-condensed thead .sorting_desc:after {
top: 6px;
right: 6px;
}
/* Scrolling */
div.dataTables_scrollHead table {
margin-bottom: 0 !important;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
div.dataTables_scrollHead table thead tr:last-child th:first-child,
div.dataTables_scrollHead table thead tr:last-child td:first-child {
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
div.dataTables_scrollBody table {
border-top: none;
margin-top: 0 !important;
margin-bottom: 0 !important;
}
div.dataTables_scrollBody tbody tr:first-child th,
div.dataTables_scrollBody tbody tr:first-child td {
border-top: none;
}
div.dataTables_scrollFoot table {
margin-top: 0 !important;
border-top: none;
}
/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column
width calculations when using scrolling impossible to align columns. We have
to use separate
*/
table.table-bordered.dataTable {
border-collapse: separate !important;
}
table.table-bordered thead th,
table.table-bordered thead td {
border-left-width: 0;
border-top-width: 0;
}
table.table-bordered tbody th,
table.table-bordered tbody td {
border-left-width: 0;
border-bottom-width: 0;
}
table.table-bordered tfoot th,
table.table-bordered tfoot td {
border-left-width: 0;
border-bottom-width: 0;
}
table.table-bordered th:last-child,
table.table-bordered td:last-child {
border-right-width: 0;
}
div.dataTables_scrollHead table.table-bordered {
border-bottom-width: 0;
}
/*
* TableTools styles
*/
.table.dataTable tbody tr.active td,
.table.dataTable tbody tr.active th {
background-color: #08C;
color: white;
}
.table.dataTable tbody tr.active:hover td,
.table.dataTable tbody tr.active:hover th {
background-color: #0075b0 !important;
}
.table.dataTable tbody tr.active th > a,
.table.dataTable tbody tr.active td > a {
color: white;
}
.table-striped.dataTable tbody tr.active:nth-child(odd) td,
.table-striped.dataTable tbody tr.active:nth-child(odd) th {
background-color: #017ebc;
}
table.DTTT_selectable tbody tr {
cursor: pointer;
}
div.DTTT .btn:hover {
text-decoration: none !important;
}
ul.DTTT_dropdown.dropdown-menu {
z-index: 2003;
}
ul.DTTT_dropdown.dropdown-menu a {
color: #333 !important; /* needed only when demo_page.css is included */
}
ul.DTTT_dropdown.dropdown-menu li {
position: relative;
}
ul.DTTT_dropdown.dropdown-menu li:hover a {
background-color: #0088cc;
color: white !important;
}
div.DTTT_collection_background {
z-index: 2002;
}
/* TableTools information display */
div.DTTT_print_info {
position: fixed;
top: 50%;
left: 50%;
width: 400px;
height: 150px;
margin-left: -200px;
margin-top: -75px;
text-align: center;
color: #333;
padding: 10px 30px;
opacity: 0.95;
background-color: white;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 6px;
-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
}
div.DTTT_print_info h6 {
font-weight: normal;
font-size: 28px;
line-height: 28px;
margin: 1em;
}
div.DTTT_print_info p {
font-size: 14px;
line-height: 20px;
}
div.dataTables_processing {
position: absolute;
top: 50%;
left: 50%;
width: 100%;
height: 60px;
margin-left: -50%;
margin-top: -25px;
padding-top: 20px;
padding-bottom: 20px;
text-align: center;
font-size: 1.2em;
background-color: white;
background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));
background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
background: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
background: -ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
background: -o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
}
/*
* FixedColumns styles
*/
div.DTFC_LeftHeadWrapper table,
div.DTFC_LeftFootWrapper table,
div.DTFC_RightHeadWrapper table,
div.DTFC_RightFootWrapper table,
table.DTFC_Cloned tr.even {
background-color: white;
margin-bottom: 0;
}
div.DTFC_RightHeadWrapper table ,
div.DTFC_LeftHeadWrapper table {
border-bottom: none !important;
margin-bottom: 0 !important;
border-top-right-radius: 0 !important;
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child,
div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child,
div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,
div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
div.DTFC_RightBodyWrapper table,
div.DTFC_LeftBodyWrapper table {
border-top: none;
margin: 0 !important;
}
div.DTFC_RightBodyWrapper tbody tr:first-child th,
div.DTFC_RightBodyWrapper tbody tr:first-child td,
div.DTFC_LeftBodyWrapper tbody tr:first-child th,
div.DTFC_LeftBodyWrapper tbody tr:first-child td {
border-top: none;
}
div.DTFC_RightFootWrapper table,
div.DTFC_LeftFootWrapper table {
border-top: none;
margin-top: 0 !important;
}
div.DTFC_LeftBodyWrapper table.dataTable thead .sorting:after,
div.DTFC_LeftBodyWrapper table.dataTable thead .sorting_asc:after,
div.DTFC_LeftBodyWrapper table.dataTable thead .sorting_desc:after,
div.DTFC_RightBodyWrapper table.dataTable thead .sorting:after,
div.DTFC_RightBodyWrapper table.dataTable thead .sorting_asc:after,
div.DTFC_RightBodyWrapper table.dataTable thead .sorting_desc:after {
display: none;
}
/*
* FixedHeader styles
*/
div.FixedHeader_Cloned table {
margin: 0 !important
}

View File

@@ -103,6 +103,8 @@ table.dataTable thead .sorting_desc::after {
top: 6px;
}
#chattrForm input,
#chconForm input,
#chownForm input {
width: 200px;
}
@@ -151,4 +153,10 @@ a.pages {
.total {
clear: both;
margin-bottom: 10px;
}
}
span[data-attributes="s"],
span[data-attributes="x"] {
font-family: monospace;
font-size: 10px;
}

View File

@@ -1,206 +0,0 @@
/*! DataTables Bootstrap 3 integration
* ©2011-2014 SpryMedia Ltd - datatables.net/license
*/
/**
* DataTables integration for Bootstrap 3. This requires Bootstrap 3 and
* DataTables 1.10 or newer.
*
* This file sets the defaults and adds options to DataTables to style its
* controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
* for further information.
*/
(function(window, document, undefined){
var factory = function( $, DataTable ) {
"use strict";
/* Set the defaults for DataTables initialisation */
$.extend( true, DataTable.defaults, {
dom:
"<'row'<'col-sm-6'l><'col-sm-6'f>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
renderer: 'bootstrap'
} );
/* Default class modification */
$.extend( DataTable.ext.classes, {
sWrapper: "dataTables_wrapper form-inline dt-bootstrap",
sFilterInput: "form-control input-sm",
sLengthSelect: "form-control input-sm"
} );
/* Bootstrap paging button renderer */
DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
var api = new DataTable.Api( settings );
var classes = settings.oClasses;
var lang = settings.oLanguage.oPaginate;
var btnDisplay, btnClass, counter=0;
var attach = function( container, buttons ) {
var i, ien, node, button;
var clickHandler = function ( e ) {
e.preventDefault();
if ( !$(e.currentTarget).hasClass('disabled') ) {
api.page( e.data.action ).draw( false );
}
};
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
button = buttons[i];
if ( $.isArray( button ) ) {
attach( container, button );
}
else {
btnDisplay = '';
btnClass = '';
switch ( button ) {
case 'ellipsis':
btnDisplay = '&hellip;';
btnClass = 'disabled';
break;
case 'first':
btnDisplay = lang.sFirst;
btnClass = button + (page > 0 ?
'' : ' disabled');
break;
case 'previous':
btnDisplay = lang.sPrevious;
btnClass = button + (page > 0 ?
'' : ' disabled');
break;
case 'next':
btnDisplay = lang.sNext;
btnClass = button + (page < pages-1 ?
'' : ' disabled');
break;
case 'last':
btnDisplay = lang.sLast;
btnClass = button + (page < pages-1 ?
'' : ' disabled');
break;
default:
btnDisplay = button + 1;
btnClass = page === button ?
'active' : '';
break;
}
if ( btnDisplay ) {
node = $('<li>', {
'class': classes.sPageButton+' '+btnClass,
'id': idx === 0 && typeof button === 'string' ?
settings.sTableId +'_'+ button :
null
} )
.append( $('<a>', {
'href': '#',
'aria-controls': settings.sTableId,
'data-dt-idx': counter,
'tabindex': settings.iTabIndex
} )
.html( btnDisplay )
)
.appendTo( container );
settings.oApi._fnBindAction(
node, {action: button}, clickHandler
);
counter++;
}
}
}
};
// IE9 throws an 'unknown error' if document.activeElement is used
// inside an iframe or frame.
var activeEl;
try {
// Because this approach is destroying and recreating the paging
// elements, focus is lost on the select button which is bad for
// accessibility. So we want to restore focus once the draw has
// completed
activeEl = $(document.activeElement).data('dt-idx');
}
catch (e) {}
attach(
$(host).empty().html('<ul class="pagination"/>').children('ul'),
buttons
);
if ( activeEl ) {
$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
}
};
/*
* TableTools Bootstrap compatibility
* Required TableTools 2.1+
*/
if ( DataTable.TableTools ) {
// Set the classes that TableTools uses to something suitable for Bootstrap
$.extend( true, DataTable.TableTools.classes, {
"container": "DTTT btn-group",
"buttons": {
"normal": "btn btn-default",
"disabled": "disabled"
},
"collection": {
"container": "DTTT_dropdown dropdown-menu",
"buttons": {
"normal": "",
"disabled": "disabled"
}
},
"print": {
"info": "DTTT_print_info"
},
"select": {
"row": "active"
}
} );
// Have the collection use a bootstrap compatible drop down
$.extend( true, DataTable.TableTools.DEFAULTS.oTags, {
"collection": {
"container": "ul",
"button": "li",
"liner": "a"
}
} );
}
}; // /factory
// Define as an AMD module if possible
if ( typeof define === 'function' && define.amd ) {
define( ['jquery', 'datatables'], factory );
}
else if ( typeof exports === 'object' ) {
// Node/CommonJS
factory( require('jquery'), require('datatables') );
}
else if ( jQuery ) {
// Otherwise simply initialise as normal, stopping multiple evaluation
factory( jQuery, jQuery.fn.dataTable );
}
})(window, document);

View File

@@ -25,7 +25,7 @@ $( document ).ready(function() {
);
// MENUS
$('#flat').menu({
$('#flat').menu({
content: $('#flat').next().html(), // grab content from this page
showSpeed: 100
});
@@ -163,6 +163,7 @@ function chownDialog() {
}
}
function chownSelected() {
var owner = $('#chownForm input[name=owner]').val();
var group = $('#chownForm input[name=group]').val();
@@ -174,6 +175,59 @@ function chownSelected() {
}
}
function chattrDialog() {
if(checkSelected()) {
$( "#chattrDialog" ).dialog({
modal: true,
buttons: {
"Change": function() {
chattrSelected();
},
"Cancel": function() {
$( this ).dialog( "close" );
}
}
});
}
}
function chattrSelected() {
var label = $('#chattrForm input[name=label]').val(),
recursive = $('#chattr-recursive').prop('checked');
if (label != null && label != "") {
$('#list_form').attr('action', "chattr.cgi?label=" + encodeURIComponent(label) + "&recursive=" + recursive);
$('#list_form').submit();
}
}
function chconDialog() {
if(checkSelected()) {
$( "#chconDialog" ).dialog({
modal: true,
buttons: {
"Change": function() {
chconSelected();
},
"Cancel": function() {
$( this ).dialog( "close" );
}
}
});
}
}
function chconSelected() {
var label = $('#chconForm input[name=label]').val(),
recursive = $('#chcon-recursive').prop('checked');
if (label != null && label != "") {
$('#list_form').attr('action', "chcon.cgi?label=" + label + "&recursive=" + recursive);
$('#list_form').submit();
}
}
function renameDialog(file) {
$("#renameForm input[name=name]").val(file);
$("#renameForm input[name=file]").val(file);
@@ -396,4 +450,4 @@ function checkSelected() {
alert('Nothing selected');
return false;
}
*/
*/

View File

@@ -1,24 +1,4 @@
/*$( document ).ready(function() {
/* $.fn.dataTableExt.sErrMode = 'throw';
$('#list_form > table').dataTable({
"order": [],
"aaSorting": [],
"bDestroy": true,
"bPaginate": false,
"sScrollY": "600px",
"bInfo": false,
"destroy": true,
"oLanguage": {
"sSearch": " "
},
"columnDefs": [ { "orderable": false, "targets": [0, 1, 4] }, ],
"iDisplayLength": 50,
});
$("form").on('click', 'div.popover', function() {
$(this).prev('input').popover('hide');
});
});
*/
function countUploads(files) {
if(files.files.length = 0) return;
var info = '';
@@ -58,7 +38,7 @@ function compressDialog() {
"backdrop" : "static",
"keyboard" : true,
"show" : true
});
});
}
function compressSelected() {
@@ -100,7 +80,7 @@ function chmodDialog() {
"backdrop" : "static",
"keyboard" : true,
"show" : true
});
});
}
function chmodSelected() {
@@ -119,7 +99,7 @@ function chownDialog() {
"backdrop" : "static",
"keyboard" : true,
"show" : true
});
});
}
function chownSelected() {
@@ -141,6 +121,48 @@ function chownSelected() {
}
}
function chattrDialog() {
if(checkSelected())
$("#chattrDialog").modal({
"backdrop" : "static",
"keyboard" : true,
"show" : true
});
}
function chattrSelected() {
var label = $('#chattrForm input[name=label]').val();
var recursive = $('#chattr-recursive').prop('checked');
if (label == null || label == "") {
$('#chattrForm input[name=label]').focus();
} else if (label != null && label != "" ) {
$('#list_form').attr('action', "chattr.cgi?label=" + encodeURIComponent(label) + "&recursive=" + recursive);
$('#list_form').submit();
}
}
function chconDialog() {
if(checkSelected())
$("#chconDialog").modal({
"backdrop" : "static",
"keyboard" : true,
"show" : true
});
}
function chconSelected() {
var label = $('#chconForm input[name=label]').val();
var recursive = $('#chcon-recursive').prop('checked');
if (label == null || label == "") {
$('#chconForm input[name=label]').focus();
} else if (label != null && label != "" ) {
$('#list_form').attr('action', "chcon.cgi?label=" + label + "&recursive=" + recursive);
$('#list_form').submit();
}
}
function renameDialog(file) {
$("#renameForm input[name=name]").val(file);
$("#renameForm input[name=file]").val(file);
@@ -290,7 +312,7 @@ function viewReadyForUpload() {
"backdrop" : "static",
"keyboard" : true,
"show" : true
});
});
}
function checkSelected() {

View File

@@ -41,7 +41,7 @@
<select name="method">
<option value="tar">.tar.gz</option>
<option value="zip">.zip</option>
</select>
</select>
</div>
</form>
</div>
@@ -66,6 +66,28 @@
</form>
</div>
<div id="chattrDialog" class="modal">
<form id="chattrForm">
<div class="form-group">
<label>$text{'attr_label'}</label><br>
<input name="label" type="text"><br>
<label>$text{'dialog_recursive'}</label>
<input id="chattr-recursive" type="checkbox" name="recursive">
</div>
</form>
</div>
<div id="chconDialog" class="modal">
<form id="chconForm">
<div class="form-group">
<label>$text{'context_label'}</label><br>
<input name="label" type="text"><br>
<label>$text{'dialog_recursive'}</label>
<input id="chcon-recursive" type="checkbox" name="recursive">
</div>
</form>
</div>
<div id="downFromUrlDialog" class="modal">
<form id="downFromUrlForm" action="http_download.cgi" method="post">
<div class="form-group">
@@ -109,7 +131,7 @@
<td><input type="checkbox" name="group4" value="4" onchange="calc_chmod()"></td>
<td><input type="checkbox" name="other4" value="4" onchange="calc_chmod()"></td>
</tr>
<tr>
<tr>
<td>$text{'chmod_write'}</td>
<td><input type="checkbox" name="owner2" value="2" onchange="calc_chmod()"></td>
<td><input type="checkbox" name="group2" value="2" onchange="calc_chmod()"></td>

View File

@@ -19,6 +19,8 @@
<a href="javascript:void(0)" onclick='compressDialog()' title="$text{'compress_selected'}"><img src='images/icons/quick/compress.png' alt="$text{'compress_selected'}" /></a>
<a href="javascript:void(0)" onclick='chmodDialog()' title="$text{'chmod_selected'}"><img src='images/icons/quick/chmod.png' alt="$text{'chmod_selected'}" /></a>
<a href="javascript:void(0)" onclick='chownDialog()' title="$text{'chown_selected'}"><img src='images/icons/quick/chown.png' alt="$text{'chown_selected'}" /></a>
<a href="javascript:void(0)" onclick='chattrDialog()' title="$text{'chattr_selected'}"><img src='images/icons/quick/chattr.png' alt="$text{'chattr_selected'}" /></a>
<a href="javascript:void(0)" onclick='chconDialog()' title="$text{'chcon_selected'}"><img src='images/icons/quick/chcon.png' alt="$text{'chcon_selected'}" /></a>
<a href="javascript:void(0)" onclick='removeSelected()' title="$text{'remove_selected'}"><img src='images/icons/quick/remove.png' alt="$text{'remove_selected'}" /></a>
<a href="javascript:void(0)" onclick='viewReadyForUpload()' title="$text{'upload_files'}"><img src='images/icons/quick/upload.png' alt="$text{'upload_files'}" /></a>
<a href="javascript:void(0)" onclick='downFromUrlDialog()' title="$text{'get_from_url'}"><img src='images/icons/quick/from-url.png' alt="$text{'get_from_url'}" /></a>

View File

@@ -31,7 +31,7 @@
<a onclick='downFromUrlDialog()'>
<i class="fa fa-globe" aria-hidden="true"></i> $text{'get_from_url'}
</a>
</li>
</ul>
</div>
@@ -75,6 +75,16 @@
<i class="fa fa-users" aria-hidden="true"></i> $text{'chown_selected'}
</a>
</li>
<li>
<a onclick='chattrDialog()'>
<i class="fa fa-tags" aria-hidden="true"></i> $text{'chattr_selected'}
</a>
</li>
<li>
<a onclick='chconDialog()'>
<i class="fa fa-shield" aria-hidden="true"></i> $text{'chcon_selected'}
</a>
</li>
<li>
<a onclick='compressDialog()'>
<i class="fa fa-file-archive-o" aria-hidden="true"></i> $text{'compress_selected'}

View File

@@ -46,6 +46,12 @@
<button class="btn btn-inverse" onclick='chownDialog()' title="$text{'chown_selected'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
<i class="fa fa-users" aria-hidden="true"></i>
</button>
<button class="btn btn-inverse" onclick='chattrDialog()' title="$text{'chattr_selected'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
<i class="fa fa-tags" aria-hidden="true"></i>
</button>
<button class="btn btn-inverse" onclick='chconDialog()' title="$text{'chcon_selected'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
<i class="fa fa-shield" aria-hidden="true"></i>
</button>
<button class="btn btn-inverse" onclick='removeDialog()' title="$text{'remove_selected'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
<i class="fa fa-trash-o" aria-hidden="true"></i>
</button>

View File

@@ -40,6 +40,8 @@ index_noperiod=No hi ha m
index_mins=minuts
index_astart=No enviïs autorespostes abans de
index_aend=No enviïs autorespostes després de
index_forever=Sempre
index_ondate=Data
index_charset=Joc de caràcters del missatge d'autoresposta
index_subject=Assumpte del missatge d'autoresposta
index_nowebmin=Aquest mòdul és per utilitzar només a Usermin. Si està visible a Webmin, el tema que estàs utilitzant és incomplet.

View File

@@ -20,3 +20,4 @@ desc_ms_MY=Tapis dan Mengirim Mel
longdesc_de=Erstellt Regeln, Filtern und Weiterleiten von eingehende E-Mail.
desc_pl=Filtry i przekierowanie e-maili
longdesc_pl=Twórz regu³y filtrów i przekierowania przychodz±cych e-maili.
longdesc_ca=Crea regles per filtrar i reenviar el correu d'entrada.

View File

@@ -58,7 +58,7 @@ index_bootup=Activa'l en engegar
index_bootupdesc=Canvia aquesta opció per controlar si el tallafocs s'ha d'activar en engegar el sistema o no.
index_return=a la llista de regles
index_setup=Encara no s'ha configurat cap tallafocs IPtables al sistema. Webmin te'n pot configurar un i desar-lo al fitxer $1, amb uns valors inicials basats en el tipus de tallafocs seleccionat més avall...
/
index_rsetup=La configuració del tallafocs IPtables del sistema està a punt de ser reiniciada. Webmin configurarà noves regles per defecteew default rules per a ser desade al fitxer $1, amb els paràmetres inicials basats en la teva selecció de tipus de tallafocs de sota...
index_auto0=Permet tot el trànsit
index_auto1=Executa traducció d'adreces de xarxa sobre la interfície externa:
index_auto2=Bloqueja totes les connexions d'entrada sobre la interfície externa:

View File

@@ -24,3 +24,4 @@ desc_ms_MY=Firewall Linux
longdesc_de=Konfiguriert eine Linux-Firewall mit iptables. Erm&#246;glicht die Bearbeitung aller Tabellen, Ketten, Regeln und Optionen.
desc_pl=Firewall Linuksa
longdesc_pl=Konfiguracja firewall linuksa u¿ywaj±c iptables. Pozwala na edycjê wszystkich tabel, regu³ i opcji.
longdesc_ca=Configura un tallafocs Linux utilitzant iptables. Permet l'edició de totes les taules, cadenes, regles i opcions.

View File

@@ -4,3 +4,4 @@ view_condition=1
cluster_mode=1
comment_mod=0
force_init=0
perpage=50

View File

@@ -1,4 +1,5 @@
line0=Configurable options,11
perpage=Number of rules to display per page,3,50
view_condition=Display condition in rules list?,1,1-Yes,0-No
view_comment=Display comment in rules list?,1,1-Yes,0-No
comment_mod=Store comments as,1,0-# comments in save file,1-&#45;&#45;comment option

View File

@@ -9,5 +9,5 @@ after_cmd=Ordre a executar despr
before_apply_cmd=Ordre a executar abans d'aplicar la configuració,3,Cap
after_apply_cmd=Ordre a executar després d'aplicar la configuració,3,Cap
line1=Configuració del sistema,11
save_file=Fitxer de desat ip6tables a editar,3,Utilitza el valor per defecte del sistema o de Webmin
save_file=Fitxer de desat IPtables a editar,3,Utilitza el valor per defecte del sistema o de Webmin
direct=Edita directament les regles del tallafocs enlloc del fitxer,1,1-Sí,0-No

View File

@@ -1,4 +1,5 @@
line0=Konfigurierbare Optionen,11
perpage=Anzahl der Regeln pro Seite zum anzeigen,3,50
view_condition=Zeige Zustand in Regelliste?,1,1-Ja,0-Nein
view_comment=Zeige Kommentare in Regelliste an?,1,1-Ja,0-Nein
comment_mod=Speichere Kommentare als,1,0-# Kommentar in Datei speichern,1-&#45;&#45; Kommentaroption

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