Compare commits

..

319 Commits
1.730 ... 1.760

Author SHA1 Message Date
Jamie Cameron
3430c74fe2 New version bump 2015-06-20 10:31:56 -07:00
Jamie Cameron
16949927d6 Remove dupe string 2015-06-20 10:30:26 -07:00
Jamie Cameron
a8cf0a8e78 Fix missing var 2015-06-19 17:10:02 -07:00
Jamie Cameron
3d5802bcaf Fix missing var 2015-06-19 17:09:06 -07:00
Jamie Cameron
fa3a61c5a7 CLean up todo notes 2015-06-19 16:59:48 -07:00
Jamie Cameron
5d55867393 Completed ACL option to control allowed views for zones: 2015-06-19 16:18:22 -07:00
Jamie Cameron
81f657fa15 UI for selecting views the user can edit domains in 2015-06-18 17:41:36 -07:00
Jamie Cameron
41b8d4da9a changes for 1.750 2015-06-18 13:10:42 -07:00
Jamie Cameron
450264d182 Button to make a zone the default 2015-06-17 20:29:17 -07:00
Jamie Cameron
be4da986ec Use perl to filter out unwanted tables, as _ is a special character in SQL likes https://sourceforge.net/p/webadmin/bugs/4614/ 2015-06-17 19:55:13 -07:00
Jamie Cameron
98c2a76499 German translation updates from Raymond Vetter 2015-06-15 15:53:53 -07:00
Jamie Cameron
f1e2287b3a German translation updates from Raymond Vetter 2015-06-15 15:53:49 -07:00
Jamie Cameron
dfdacb3a26 Finished off zone creation 2015-06-14 19:17:58 -07:00
Jamie Cameron
9924f44c05 Button and script to delete a zone 2015-06-14 19:11:14 -07:00
Jamie Cameron
d055e86901 Form for adding a zone 2015-06-14 17:01:42 -07:00
Jamie Cameron
d9d94fd394 Use the new open-ports command 2015-06-14 16:01:32 -07:00
Jamie Cameron
d35cffade9 Add script to open ports on the command line 2015-06-14 14:23:40 -07:00
Jamie Cameron
cd6939bf8a Detect if firewalld is in use 2015-06-14 13:53:23 -07:00
Jamie Cameron
5672b61358 Script to update zone interfaces 2015-06-14 11:13:34 -07:00
Jamie Cameron
8b564f10e3 German translation updates from Raymond Vetter 2015-06-14 10:39:44 -07:00
Jamie Cameron
39b80ee1ec Function for updating a zone's interface 2015-06-13 17:22:10 -07:00
Jamie Cameron
7e1b9071e1 Logging script 2015-06-13 15:41:19 -07:00
Jamie Cameron
7930a03763 Show interfaces for zone 2015-06-12 20:42:06 -07:00
Jamie Cameron
ae23abc827 German translation updates from Raymond Vetter 2015-06-12 19:50:18 -07:00
Jamie Cameron
f71283ae40 Sometimes the ip command is used to add extra addresses http://virtualmin.com/node/37237 2015-06-10 23:00:50 -07:00
Jamie Cameron
0832cd40a1 Address and netmask could be on the same line http://virtualmin.com/node/37237 2015-06-10 22:57:25 -07:00
Jamie Cameron
aa4532ff1b Start and stop scripts 2015-06-09 22:55:11 -07:00
Jamie Cameron
adecd320f5 initial module changelog 2015-06-09 22:34:27 -07:00
Jamie Cameron
8ec0c144d2 Prepare module for inclusion in standard distribution 2015-06-09 22:32:37 -07:00
Jamie Cameron
b2620accf8 German translation updates from Raymond Vetter 2015-06-09 20:24:43 -07:00
Jamie Cameron
f2d77a7bee Button to apply saved rules 2015-06-08 22:50:34 -07:00
Jamie Cameron
f4bb5a843a CGI to delete firewalld rules 2015-06-08 22:38:01 -07:00
Jamie Cameron
5090c85338 German translation updates from Raymond Vetter 2015-06-08 15:23:41 -07:00
Jamie Cameron
f145fb02cf Script to enable or diosable at boot 2015-06-07 23:10:21 -07:00
Jamie Cameron
cdc89c352a Add module usability check script 2015-06-07 23:02:04 -07:00
Jamie Cameron
4c537d0fd8 Firewall service creation 2015-06-07 22:57:40 -07:00
Jamie Cameron
95a4c2c956 German translation updates from Raymond Vetter 2015-06-07 18:40:51 -07:00
Jamie Cameron
1a4d536351 German translation updates from Raymond Vetter 2015-06-07 18:40:50 -07:00
Jamie Cameron
4e4f82713e Handle zones with no ports 2015-06-07 16:36:47 -07:00
Jamie Cameron
6434f896dc Merge branch 'master' of git@github.com:webmin/webmin 2015-06-07 16:35:26 -07:00
Jamie Cameron
4a3dfb308b Functions for service management 2015-06-07 16:34:08 -07:00
Jamie Cameron
cb2eb0c95d Merge pull request #222 from stuchy3/master
Czech language update
2015-06-07 10:54:10 -07:00
Jan Štourač
b134e9e0d7 Added Czech translation for Gray framed theme 2015-06-07 13:33:48 +02:00
Jan Štourač
28b90e1b37 Added czech language for system-info 2015-06-07 13:24:21 +02:00
Jan Štourač
e9c0383a3c Czech language updated 2015-06-07 13:00:26 +02:00
Jamie Cameron
1118c2bb2f Scripts for saving, creating and deleting firewalld ports 2015-06-06 20:50:05 -07:00
Jamie Cameron
caea0eee60 Add refer checking to xmlrpc.cgi, while still allowing direct access 2015-06-06 10:26:37 -07:00
Jamie Cameron
573d39e146 Fix appending of version to package name https://github.com/webmin/webmin/issues/221 2015-06-06 10:16:03 -07:00
Jamie Cameron
3c41e0e816 Re-factor referer checking code to make it more readable 2015-06-06 07:19:24 -07:00
Jamie Cameron
eb950ff47d Generate new SHA2 key at install time 2015-06-05 20:48:34 -07:00
Jamie Cameron
c9bde07cfd API for listing services 2015-06-04 23:23:43 -07:00
Jamie Cameron
44a1b68426 UI for adding or editing a service 2015-06-04 23:23:15 -07:00
Jamie Cameron
d0ebb3783e Catalan update from Jaume Badiella 2015-06-04 19:29:32 -07:00
Jamie Cameron
f8a9353408 Catalan update from Jaume Badiella 2015-06-04 19:29:18 -07:00
Jamie Cameron
0eae027dbc German translation updates from Raymond Vetter 2015-06-04 19:27:08 -07:00
Jamie Cameron
278ec5cd76 Firewalld edit port page 2015-06-02 21:52:44 -07:00
Jamie Cameron
a6a20642fb Don't autoreply to spam https://sourceforge.net/p/webadmin/usermin-bugs/440/ 2015-06-02 19:48:26 -07:00
Jamie Cameron
7efe201a27 German translation updates from Raymond Vetter 2015-06-02 19:40:23 -07:00
Jamie Cameron
39bb0a681c No need to check deps on an upgrade 2015-06-01 22:55:01 -07:00
Jamie Cameron
2d896443eb Show zones and rules on the first page 2015-06-01 22:54:21 -07:00
Jamie Cameron
a6d1f74f1f German translation updates from Raymond Vetter 2015-05-31 14:12:32 -07:00
Jamie Cameron
8ab1cc4abc skeleton of firewalld module 2015-05-31 10:20:27 -07:00
Jamie Cameron
269bc80ec3 Postfix mail queue function can call error https://github.com/webmin/webmin/issues/218 2015-05-31 09:37:36 -07:00
Jamie Cameron
9871556169 remove un-necessary ports from link https://github.com/webmin/webmin/issues/217 2015-05-31 09:21:51 -07:00
Jamie Cameron
e3ef1b9fce Merge branch 'master' of git@github.com:webmin/webmin 2015-05-30 16:43:53 -07:00
Jamie Cameron
ad9bc2701d Also wrap icons in a div for use by authentic theme https://github.com/webmin/webmin/pull/216 2015-05-30 16:43:39 -07:00
Jamie Cameron
2468ea1001 Merge pull request #216 from qooob/patch-1
Important addition to make icons work with Authentic Theme
2015-05-30 16:41:55 -07:00
Ilia Rostovtsev
cef1b1332a Important addition to make icons work with Authentic Theme
Jamie, ok! It's very complicated to make things work in all possible situations. At the moment it doesn't work as in 90% of cases the certain rules are used. Those are that container for `&generate_icon` should be `<div class="row icons-row></div>`. In case it's done in funky way like in this module, I add extra class `inline-row` to make things work. For example, latest update 13.03 does great with style, that is used in Webmin Servers Index module. You can test it. Try using right mouse clicks for selects.

I strongly recommend, to try to recall all funky ways of using `&generate_icon` like in this module and add  `<div class="row icons-row></div>` wrapper.

It will not affect neither your nor Joe's themes.

Thanks!
2015-05-30 22:01:15 +03:00
Jamie Cameron
ed11ba25c6 fix expansion of IP range https://sourceforge.net/p/webadmin/bugs/4606/ 2015-05-29 17:26:07 -07:00
Jamie Cameron
efae515c1f Russian translations from 2015-05-28 22:13:17 -07:00
Jamie Cameron
a4412fcbe8 Handle case where no skip list is given https://sourceforge.net/p/webadmin/bugs/4609/ 2015-05-28 20:09:20 -07:00
Jamie Cameron
eba13b74c9 German translation updates from Raymond Vetter 2015-05-27 21:46:52 -07:00
Jamie Cameron
3548188c38 Mysqldump can print warnings even if it doesn't fail http://virtualmin.com/node/37195 2015-05-27 19:56:56 -07:00
Jamie Cameron
36968f5362 Add options to disable TLS 1.0, 1.1 and 1.2 in Usermin too https://sourceforge.net/p/webadmin/bugs/4590/ 2015-05-26 21:20:50 -07:00
Jamie Cameron
2b77e8f020 Add options to disable TLS 1.0, 1.1 and 1.2 https://sourceforge.net/p/webadmin/bugs/4590/ 2015-05-26 21:06:06 -07:00
Jamie Cameron
700b4f696e No / is needed 2015-05-26 18:04:01 -07:00
Jamie Cameron
bb24d89ddb Force through the upgrade even if there are missing dependencies 2015-05-25 14:39:44 -07:00
Jamie Cameron
f0c0efb411 Show a nicer message if no entries were found in /etc/inittab https://github.com/webmin/webmin/issues/211 2015-05-23 07:30:44 -07:00
Jamie Cameron
ea7d904d90 If the runlevel couldn't be detected any other way, assume 3 http://virtualmin.com/node/37100 2015-05-22 13:52:34 -07:00
Jamie Cameron
deed37b482 Chrome 43 throws and exception on this line https://github.com/webmin/webmin/issues/210 2015-05-21 17:30:07 -07:00
Jamie Cameron
5cd13920a8 Fix selection of current shared network https://sourceforge.net/p/webadmin/bugs/4601/ 2015-05-20 20:57:59 -07:00
Jamie Cameron
8227e56084 Tell boot systems like systemd that webmin's start script forks into the background 2015-05-19 21:57:20 -07:00
Jamie Cameron
57efdd9a28 use common function 2015-05-18 20:30:25 -07:00
Jamie Cameron
b36d0f955c Don't offer to upgrade when using bukkit 2015-05-18 20:29:46 -07:00
Jamie Cameron
5e5f6cd916 Re-factor jar getting code 2015-05-18 20:16:27 -07:00
Jamie Cameron
4e81ecb659 German translation updates from Raymond Vetter 2015-05-13 21:43:02 -07:00
Jamie Cameron
88679cff5a Fix perl warning https://github.com/webmin/webmin/issues/207 2015-05-12 14:42:15 -07:00
Jamie Cameron
a6901947c2 New version bump 2015-05-10 13:42:47 -07:00
Jamie Cameron
8912154c0b New Postfix version 2015-05-10 13:40:53 -07:00
Jamie Cameron
6b34d179bb changelog for pkgsrc support 2015-05-10 11:00:48 -07:00
Jamie Cameron
bb2f091a17 pkgsrc has no local install mode 2015-05-10 10:50:47 -07:00
Jamie Cameron
dfd337009f Translation function for pkgsrc package names 2015-05-10 10:41:07 -07:00
Jamie Cameron
554cba6eba MacOS is supported now, with pkgsrc 2015-05-10 10:28:46 -07:00
Jamie Cameron
9d3e0e85ba Correct version and description display for packages not installed yet 2015-05-10 10:25:29 -07:00
Jamie Cameron
7d670cc449 More work on MacOS pkgsrc support 2015-05-10 09:57:25 -07:00
Jamie Cameron
0cc0a893a2 Get list of files in a package on MacOS 2015-05-09 21:55:38 -07:00
Jamie Cameron
b7190b1927 Start of work on pkgsrc support 2015-05-09 15:36:55 -07:00
Jamie Cameron
68890d8f2b Remove from the distribution modules for ancient software 2015-05-07 16:50:00 -07:00
Jamie Cameron
03f4c9fd56 Dev version bump 2015-05-05 19:55:50 -07:00
Jamie Cameron
c813b1c068 Allow multiple comma-separated IPs 2015-05-05 18:42:38 -07:00
Jamie Cameron
aafb66e45c changelog for launchd support 2015-05-03 10:23:05 -07:00
Jamie Cameron
8f0d32b764 More changes needed to support launchd 2015-05-03 10:14:03 -07:00
Jamie Cameron
62bf3b6cd4 Change the usermin boot script slightly to work with launchd 2015-05-03 10:10:20 -07:00
Jamie Cameron
58a454dc23 Change the webmin boot script slightly to work with launchd 2015-05-03 10:08:10 -07:00
Jamie Cameron
5a74498b87 Mailcap module needs to access the user's config 2015-05-03 10:07:21 -07:00
Jamie Cameron
ac238e37d1 More work on launchd support for MacOS X 2015-05-02 15:33:36 -07:00
Jamie Cameron
9e4269ebae Add command line option to not fork 2015-05-02 15:09:53 -07:00
Jamie Cameron
dfb0db593d New Debian versions 2015-04-29 19:52:55 -07:00
Jamie Cameron
79e2bf69b4 Show at-boot setting 2015-04-28 21:34:52 -07:00
Jamie Cameron
c153fae3d8 Suppress warnings when gpg doesn't output anything http://virtualmin.com/node/36979 2015-04-28 20:57:18 -07:00
Jamie Cameron
c1105d0ac5 Add support for deleting launchd agents 2015-04-26 17:22:38 -07:00
Jamie Cameron
fdffa9ee42 Use consistent comment type 2015-04-26 16:52:34 -07:00
Jamie Cameron
cb008888bf Launchd action creation now working 2015-04-26 16:30:27 -07:00
Jamie Cameron
86ce05ec3b UI for adding a launchd agent 2015-04-26 15:35:31 -07:00
Jamie Cameron
a42fbc5bd0 Param for MAC address is actually hwaddress https://sourceforge.net/p/webadmin/bugs/4589/ 2015-04-26 15:28:09 -07:00
Jamie Cameron
441b9f1502 Show detailed CPU information on MacOS 2015-04-26 10:19:09 -07:00
Jamie Cameron
1e0100b424 Show memory usage in bytes too 2015-04-26 10:03:05 -07:00
Jamie Cameron
288a377e71 Collect RAM and swap usage on macos 2015-04-26 09:50:50 -07:00
Jamie Cameron
12e2aecbda Give credit for translations 2015-04-26 09:23:44 -07:00
Jamie Cameron
2d83ca6cdf Catalan update from Jaume Badiella 2015-04-26 09:23:16 -07:00
Jamie Cameron
f498f36bef Catalan update from Jaume Badiella 2015-04-26 09:23:04 -07:00
Jamie Cameron
2eb957fc04 German translation updates from Raymond Vetter 2015-04-26 09:21:06 -07:00
Jamie Cameron
9cff0de208 Correct function's documented return type 2015-04-25 22:00:29 -07:00
Jamie Cameron
4b2ba48e58 Work on launchd support 2015-04-25 22:00:07 -07:00
Jamie Cameron
d47ee41c32 Fix remote host to run command on after failure in the case where there are multiple hosts http://virtualmin.com/node/36948 2015-04-25 21:54:38 -07:00
Jamie Cameron
22f3d49e5c Show password DB type 2015-04-25 15:02:00 -07:00
Jamie Cameron
a10dd02a49 New Mint versions 2015-04-23 17:03:37 -07:00
Jamie Cameron
52196635a3 Use reload command by default to avoid cache re-read https://sourceforge.net/p/webadmin/bugs/4588/ 2015-04-21 14:52:10 -07:00
Jamie Cameron
59efd239ea Devel version bump 2015-04-17 12:39:51 -07:00
Jamie Cameron
1a1deef64a UNit names can have spaces or funny characters at the start 2015-04-16 19:04:25 -07:00
Jamie Cameron
132ea695bc UNit names can have spaces or funny characters at the start 2015-04-16 19:03:50 -07:00
Jamie Cameron
743d0d59ad Multi-part TXT records are not automatically joined by a space, so when creating an SPF record this has to be explicitly added 2015-04-15 21:19:52 -07:00
Jamie Cameron
7162dbaa8e Detect more IPsec variants 2015-04-15 18:47:25 -07:00
Jamie Cameron
c378e60ec7 Show process sizes using sensible units https://github.com/webmin/webmin/issues/202 2015-04-13 22:34:02 -07:00
Jamie Cameron
9612e05536 give credit for norwegian 2015-04-10 22:31:09 -07:00
Jamie Cameron
f38442bbae Sort users by login 2015-04-08 17:18:22 -07:00
Jamie Cameron
cf0ddafbe0 German translation updates from Raymond Vetter 2015-04-07 20:31:04 -07:00
Jamie Cameron
1727c9917d German translation updates from Raymond Vetter 2015-04-07 20:30:57 -07:00
Jamie Cameron
18d16d7639 Don't append the architecture un-necessarily, as this breaks upgrades that change it http://virtualmin.com/node/36740 2015-04-05 16:19:53 -07:00
Jamie Cameron
3d20f8c56e Jails can apparently have no actions http://virtualmin.com/node/36768 2015-04-05 14:45:13 -07:00
Jamie Cameron
d4264be5fd A max tick time of -1 means unlimited 2015-04-05 12:05:32 -07:00
Jamie Cameron
6d553a10ad Allow max ticks time to be edited 2015-04-05 12:02:40 -07:00
Jamie Cameron
5f4180cf13 Update docs to modern day 2015-04-02 21:08:27 -07:00
Jamie Cameron
4aedfdb006 Update docs to modern day 2015-04-02 21:07:28 -07:00
Jamie Cameron
a3658ff653 fix wording 2015-04-02 20:59:39 -07:00
Jamie Cameron
d040242a7e Also use yum updateinfo to get security updates 2015-04-02 19:12:50 -07:00
Jamie Cameron
019e5e15e6 Semicolon can be a comment character too 2015-04-02 16:57:38 -07:00
Jamie Cameron
2a8797c49c Merge pull request #199 from tandrup/httpOnly-cookies
Add httpOnly to cookies on login page. Solves #4565.
2015-04-01 21:03:44 -07:00
Jamie Cameron
ab1095e529 Disallow TRACE requests, which we don't even support 2015-04-01 16:54:38 -07:00
Mads Mætzke Tandrup
30168f57bb Add httpOnly to cookies on login page. Solves #4565.
Add httpOnly to pam_login and session_login to avoid security scans reporting false positives on cookies without httpOnly
2015-04-01 14:37:02 +02:00
Jamie Cameron
0a2eb1d520 --to-source can be followed by just a :port 2015-03-29 21:47:13 -07:00
Jamie Cameron
ec4f05ec5f Use correct permissions for MH format too 2015-03-29 18:09:18 -07:00
Jamie Cameron
7a9b4d0b2b Use correct permissions when moving email between users http://virtualmin.com/node/36696 2015-03-29 18:07:40 -07:00
Jamie Cameron
b7b6624ee8 Fix escaping of % in commands http://virtualmin.com/node/36673 2015-03-27 15:06:42 -07:00
Jamie Cameron
f455c24054 Make Net::SSLeay mandatory 2015-03-26 20:30:52 -07:00
Jamie Cameron
ee94c220da German translation updates from Raymond Vetter 2015-03-26 20:30:08 -07:00
Jamie Cameron
615f97f47e German translation updates from Raymond Vetter 2015-03-26 20:29:51 -07:00
Jamie Cameron
1ef26769b6 IPfilter live output can contain inet before 'from' http://virtualmin.com/node/36645 2015-03-26 17:22:29 -07:00
Jamie Cameron
04ed6406e7 Add separate command before/after blacklist refresh http://virtualmin.com/node/36643 2015-03-25 23:10:09 -07:00
Jamie Cameron
882dcb7384 Don't wrap regexps unexpectedly http://virtualmin.com/node/36656 2015-03-25 10:26:33 -07:00
Jamie Cameron
f29f13f817 Fix enabling of command block 2015-03-24 20:23:25 -07:00
Jamie Cameron
0a8abc529b German translation updates from Raymond Vetter 2015-03-23 20:22:53 -07:00
Jamie Cameron
72e2faa5b6 Dev version bump 2015-03-21 20:17:35 -07:00
Jamie Cameron
8291e1c98d Under NSLCD, scope and filter are separate directives 2015-03-21 20:09:06 -07:00
Jamie Cameron
df3fa20d6f Add button to restart LDAP client daemon, which is needed to apply settings 2015-03-21 18:01:08 -07:00
Jamie Cameron
4f532659b3 changelog for ldap fixes 2015-03-21 17:20:42 -07:00
Jamie Cameron
e1f086944d Permissions fix 2015-03-21 17:17:53 -07:00
Jamie Cameron
a13bce59e3 Fixes needed for CentOS 7 support 2015-03-21 17:17:39 -07:00
Jamie Cameron
ad46361cb0 for systemd services, the name may have .service appended 2015-03-21 17:11:19 -07:00
Jamie Cameron
fd5f09a816 Add Net::SSLeay as optional dependency to the Webmin RPM 2015-03-21 16:44:51 -07:00
Jamie Cameron
c38570cb9d In some cases, RPM mamay not list the file in the rpm --dump output if there are multiple hard links to it 2015-03-21 13:39:33 -07:00
Jamie Cameron
324732d948 Norwegian update from Stein-Aksel Basma 2015-03-20 15:45:13 -07:00
Jamie Cameron
78c5892c6a Handle different format for base directive in NSLCD http://virtualmin.com/node/36531 2015-03-18 21:53:55 -07:00
Jamie Cameron
a1e74e6659 Deal with long user/group names by requesting UIDs instead 2015-03-17 22:34:15 -07:00
Jamie Cameron
4caa56aa80 Deal with long user/group names by requesting UIDs instead 2015-03-17 22:33:31 -07:00
Jamie Cameron
95c494d9fc Handle un-formatted MAC addresses 2015-03-16 19:01:14 -07:00
Jamie Cameron
2dd92dc2b7 Allow default match mode to be configured 2015-03-16 18:59:29 -07:00
Jamie Cameron
f5580c4046 Exclude release scripts from modules 2015-03-15 11:49:39 -07:00
Jamie Cameron
cefecfb173 Don't modify a list that is being iterated over 2015-03-13 16:41:34 -07:00
Jamie Cameron
181d92ff48 New version bump 2015-03-12 17:32:01 -07:00
Jamie Cameron
d27a31e2d6 Fix dupe string 2015-03-12 17:30:19 -07:00
Jamie Cameron
c07bd9ca04 New windows versions 2015-03-12 17:08:01 -07:00
Jamie Cameron
ce5a1484fe give credit for catalan update 2015-03-10 23:27:18 -07:00
Jamie Cameron
22cb340cb3 More catalana 2015-03-10 23:25:05 -07:00
Jamie Cameron
f27cad3665 Catalan update from Jaume Badiella 2015-03-10 23:23:00 -07:00
Jamie Cameron
701795dc51 Catalan update from Jaume Badiella 2015-03-10 23:22:43 -07:00
Jamie Cameron
1cf1cf12f4 Allow Squid 3.5 https://sourceforge.net/p/webadmin/bugs/4573/ 2015-03-10 23:00:18 -07:00
Jamie Cameron
6790c03792 Filename is not a username 2015-03-10 16:59:21 -07:00
Jamie Cameron
8f38cdac33 Users can actually have numeric names 2015-03-10 16:58:23 -07:00
Jamie Cameron
3a833870ff Fix spelling error 2015-03-08 21:52:19 -07:00
Jamie Cameron
723e5fd0ad Skip packages inside module or theme directores 2015-03-08 12:27:30 -07:00
Jamie Cameron
63132ded2a New dev version bump 2015-03-06 10:42:28 -08:00
Jamie Cameron
968456b408 Include authentic theme 2015-03-05 14:27:13 -08:00
Jamie Cameron
3f53a503db Make the upload tracker a bit larger https://github.com/webmin/webmin/issues/196 2015-03-05 10:17:37 -08:00
Jamie Cameron
31ad58fda8 Use a single line break instead of <p> 2015-03-05 09:31:28 -08:00
Jamie Cameron
005873dcd9 Handle un-readable DBM format files http://virtualmin.com/node/36386 2015-03-04 14:12:29 -08:00
Jamie Cameron
18fdc2a9ba Take summary of disk usage out of header 2015-03-04 14:02:54 -08:00
Jamie Cameron
e11ef0ed93 Don't un-comment or use cace_dir entries that are not paths https://sourceforge.net/p/webadmin/bugs/4523/ 2015-03-04 11:25:54 -08:00
Jamie Cameron
b33a605699 German translation updates from Raymond Vetter 2015-03-02 15:09:34 -08:00
Jamie Cameron
bab827542b Don't use modifiers that don't look valid 2015-02-28 16:15:37 -08:00
Jamie Cameron
ea838d0500 Respect modifiers when generating records https://sourceforge.net/p/webadmin/bugs/4566/ 2015-02-28 16:13:11 -08:00
Jamie Cameron
975e7ad13f Allow saving of generators with modifiers https://sourceforge.net/p/webadmin/bugs/4566/ 2015-02-28 16:03:09 -08:00
Jamie Cameron
34e9b20324 German translation updates from Raymond Vetter 2015-02-28 10:17:42 -08:00
Jamie Cameron
7d42268b80 Properly pass through the referrer header http://virtualmin.com/node/36327 2015-02-27 18:20:18 -08:00
Jamie Cameron
64d1e8f4b4 The output from yum list-sec doesn't always contain the word security 2015-02-26 21:30:09 -08:00
Jamie Cameron
d40b907ad2 Update message to better reflect actual UI http://virtualmin.com/node/36326 2015-02-26 10:56:29 -08:00
Jamie Cameron
e30670bb2e German translation updates from Raymond Vetter 2015-02-25 17:05:41 -08:00
Jamie Cameron
3115b17fa1 Add MostlyLinux support 2015-02-24 16:13:52 -08:00
Jamie Cameron
d3242017bc German translation updates from Raymond Vetter 2015-02-24 14:29:40 -08:00
Jamie Cameron
aeb98e9d77 Merge pull request #192 from bradleykite/master
Allow "transfer-source" to be specified so slave zones within the views ...
2015-02-23 14:28:33 -08:00
Bradley Kite
118f705eb4 Allow "transfer-source" to be specified so slave zones within the views can match the correct view on the master. 2015-02-23 11:06:41 +00:00
Jamie Cameron
f302357943 Allow use of status description in custom email https://sourceforge.net/p/webadmin/bugs/4561/ 2015-02-22 14:37:02 -08:00
Jamie Cameron
a81c833462 German translation updates from Raymond Vetter 2015-02-22 13:18:56 -08:00
Jamie Cameron
d5f2981d02 When looking for the default lib.pl in a clone, the name should be based on the original module 2015-02-21 22:03:06 -08:00
Jamie Cameron
8ed9a84180 Allow module-level vetoing 2015-02-21 09:30:08 -08:00
Jamie Cameron
14af860ed5 Handle case where devices directory doesn't exist, due to remove of Network Manager 2015-02-20 21:56:53 -08:00
Jamie Cameron
dbd29ec126 If a slave zone is in binary format, convert it to text when it becomes a master http://virtualmin.com/node/36245 2015-02-20 16:58:22 -08:00
Jamie Cameron
3fcb565086 German translation updates from Raymond Vetter 2015-02-19 21:31:06 -08:00
Jamie Cameron
c7789ce801 Fix bug that prevents sending email if a single DB backup fails http://virtualmin.com/node/33129 2015-02-19 17:46:43 -08:00
Jamie Cameron
79d3d04fc3 Fix passing of miniserv config https://sourceforge.net/p/webadmin/bugs/4560/ 2015-02-19 10:20:11 -08:00
Jamie Cameron
ad5a6c9688 Fix inconsistency 2015-02-18 22:44:31 -08:00
Jamie Cameron
80a428e0e6 German translation updates from Raymond Vetter 2015-02-18 22:43:05 -08:00
Jamie Cameron
45cd9cf322 Installation into VMs is actually OK, as they can still have the non-hardware time set https://sourceforge.net/p/webadmin/bugs/4534/ 2015-02-18 21:42:49 -08:00
Jamie Cameron
7fd6e5f0ef Show full IMAP response if line cannot be parsed 2015-02-17 21:51:25 -08:00
Jamie Cameron
cf091c95e1 German translation updates from Raymond Vetter 2015-02-15 16:57:24 -08:00
Jamie Cameron
959b355848 Refresh package caches in all modules http://www.virtualmin.com/node/36084 2015-02-13 14:53:37 -08:00
Jamie Cameron
baf5d23a6f Don't use double header https://github.com/webmin/webmin/issues/189 2015-02-11 19:56:43 -08:00
Jamie Cameron
ec1353a720 icons_table function already prints https://sourceforge.net/p/webadmin/bugs/4492/ 2015-02-08 18:59:19 -08:00
Jamie Cameron
9938636224 Clarify param meaning 2015-02-08 10:35:53 -08:00
Jamie Cameron
ac8634bf75 Actually, the inet6 addr: format is only used by the ifconfig command 2015-02-08 10:34:49 -08:00
Jamie Cameron
5a8ae25d02 Handle different output format from ip addr command http://virtualmin.com/comment/edit/143915 2015-02-08 10:33:03 -08:00
Jamie Cameron
990e75724d Remove redundant fallback method http://virtualmin.com/node/36094 2015-02-08 10:30:22 -08:00
Jamie Cameron
8099d2b045 Bring functions for checking allowed IPs into sync http://virtualmin.com/node/36017 2015-02-06 14:34:36 -08:00
Jamie Cameron
0ffdd6c842 German translation updates from Raymond Vetter 2015-02-04 22:03:10 -08:00
Jamie Cameron
61f55a1343 German translation updates from Raymond Vetter 2015-02-04 22:03:07 -08:00
Jamie Cameron
8297c3d42f Pass port flag to backup and restore commands http://virtualmin.com/node/36093 2015-02-03 19:34:41 -08:00
Jamie Cameron
c5c8f0d05f Fix IP matching function when dealing with partial networks http://virtualmin.com/node/36017 2015-02-03 15:31:57 -08:00
Jamie Cameron
a71bf42232 Bugfixes and custom port support 2015-02-02 19:50:27 -08:00
Jamie Cameron
6e873a172a Merge branch 'master' of git@github.com:webmin/webmin 2015-01-31 15:56:06 -08:00
Jamie Cameron
e4766eb2ba German translation updates from Raymond Vetter 2015-01-31 15:55:35 -08:00
Joe Cooper
1c2bdf0f0c Typo 2015-01-30 18:09:38 -06:00
Jamie Cameron
aef1cbbeab Deal with different ifconfig format 2015-01-29 21:20:49 -08:00
Jamie Cameron
dc9cb83946 Add delay before starting to placate systemd 2015-01-29 15:37:12 -08:00
Jamie Cameron
288c05d8f1 Deal with different output format as seen in BareOS 1.4 2015-01-27 21:52:22 -08:00
Jamie Cameron
2f34f1412d Don't link back to virtualmin for root 2015-01-26 20:27:48 -08:00
Jamie Cameron
99e1eda954 Stop setting un-needed var to diable ACL checking 2015-01-26 20:04:38 -08:00
Jamie Cameron
bae3f5e77b Skip ACL check for scripts that aren't run via the web 2015-01-26 20:02:14 -08:00
Jamie Cameron
ada457ed56 German translation updates from Raymond Vetter 2015-01-25 10:24:10 -08:00
Jamie Cameron
f9a2d37e08 Add empty en_GB file at top level, so that .UTF-8 variant gets created 2015-01-24 21:14:49 -08:00
Jamie Cameron
c30ca90170 Show charset 2015-01-24 21:01:50 -08:00
Jamie Cameron
ceb1a57dd8 Don't wrap command in brackets if it already starts with them, as this can cause escaping problems with some shells 2015-01-23 17:20:09 -08:00
Jamie Cameron
cbeaed860b Allow restore of non-module files from the backup https://sourceforge.net/p/webadmin/bugs/4545/ 2015-01-23 16:12:45 -08:00
Jamie Cameron
9054e37d3a German translation updates from Raymond Vetter 2015-01-22 17:46:08 -08:00
Jamie Cameron
1925ba53c4 Handle some odd IP route setup seen on CentOS 7 http://virtualmin.com/node/35910 2015-01-22 08:16:47 -08:00
Jamie Cameron
998407be9a icon for new record type 2015-01-20 22:22:49 -08:00
Jamie Cameron
416ae2b62f icon for new record type 2015-01-20 22:18:06 -08:00
Jamie Cameron
1c38031703 icon for new record type 2015-01-20 22:17:38 -08:00
Jamie Cameron
6d5f109068 Use ; and space as DMARC separators 2015-01-19 17:45:29 -08:00
Jamie Cameron
d05c0c70f4 Fix typo 2015-01-19 16:31:20 -08:00
Jamie Cameron
14d8e45d4f Version bump for DMARC feature 2015-01-19 15:01:06 -08:00
Jamie Cameron
75518c5227 Fix theme name 2015-01-19 14:40:10 -08:00
Jamie Cameron
6b1a006ca1 Fix version 2015-01-19 14:30:04 -08:00
Jamie Cameron
5e68b937d7 Remove bad links 2015-01-19 14:29:28 -08:00
Jamie Cameron
d65ff9a623 Bring back the old blue theme, but with modern code 2015-01-19 14:24:12 -08:00
Jamie Cameron
a116a5e10f Apache 2.4 needs a Require all granted directive to allow access 2015-01-19 11:14:05 -08:00
Jamie Cameron
889d7d2ea0 Fixes for DMARC record editing 2015-01-18 22:39:39 -08:00
Jamie Cameron
754248f6af Support for editing DMARC records, similar to the way SPF is handled 2015-01-18 18:41:07 -08:00
Jamie Cameron
f3fba12703 Add ID for recollect button, so it can be vetod 2015-01-18 11:57:16 -08:00
Jamie Cameron
a71f333ff0 When overwriting a file via a temp file, keep the old permissions. Otherwise, let the umask apply 2015-01-17 23:31:28 -08:00
Jamie Cameron
8c80095878 000 is a valid umask 2015-01-17 23:15:50 -08:00
Jamie Cameron
dad6a7c3e9 Use correct permissions on source and dest folders when copying 2015-01-17 20:18:30 -08:00
Jamie Cameron
50991313bf German translation updates from Raymond Vetter 2015-01-17 15:52:47 -08:00
Jamie Cameron
6b4ec5b3f0 Use modern UI library 2015-01-17 12:03:51 -08:00
Jamie Cameron
88b73eaea4 Allow visible system info sections to be selected in the module ACL 2015-01-17 11:50:23 -08:00
Jamie Cameron
e263e49912 Ignore commented out cache paths that are actually just headings http://virtualmin.com/node/35881 2015-01-17 10:33:20 -08:00
Jamie Cameron
f8dfa52d92 Allow display of system temps in fahrenheit http://virtualmin.com/node/35875 2015-01-16 23:34:34 -08:00
Jamie Cameron
73cc25e127 Fix checking of server type 2015-01-13 18:51:03 -08:00
Jamie Cameron
07e9a01919 MYSQL_PASS can't be used when running as a different user if the user has a .my.cnf file https://www.virtualmin.com/node/35764 2015-01-13 15:58:34 -08:00
Jamie Cameron
04cc026a61 Document function 2015-01-13 15:42:29 -08:00
Jamie Cameron
17c63ef178 Put file handle into a package, so that all callers can use it 2015-01-12 16:37:06 -08:00
Jamie Cameron
51ca560718 Clear out SMTP SSL and port when connecting locally 2015-01-12 16:31:51 -08:00
Jamie Cameron
2c363c3238 German translation updates from Raymond Vetter 2015-01-12 15:50:47 -08:00
Jamie Cameron
12735f1c54 Fix checkbox image 2015-01-11 16:01:57 -08:00
Jamie Cameron
a87593651f Dev version bump 2015-01-11 14:05:12 -08:00
Jamie Cameron
5f54caa5a9 Support easier to use release flag 2015-01-11 10:03:25 -08:00
Jamie Cameron
89897579f5 Use named param 2015-01-11 10:03:15 -08:00
Jamie Cameron
3d18a1b9fd Add support for SSL encrypted SMTP connections 2015-01-11 10:03:02 -08:00
Jamie Cameron
b8073652fd Allow selection of SSL mode for sending email 2015-01-11 09:44:12 -08:00
Jamie Cameron
6cf9f5243c Make default more obvious 2015-01-11 09:34:31 -08:00
Jamie Cameron
5ea42f455e Use webprefix relative path 2015-01-10 20:24:27 -08:00
Jamie Cameron
34d891545e Add webprefix for CGI scripts 2015-01-10 20:22:11 -08:00
Jamie Cameron
0ef822606b Make notifications scarier 2015-01-10 16:16:05 -08:00
Jamie Cameron
69185c1df3 Use proper args in send_mail function 2015-01-09 18:25:54 -08:00
Jamie Cameron
64468f1afa Add webprefix back to links http://sourceforge.net/p/webadmin/bugs/4536 2015-01-09 15:24:42 -08:00
Jamie Cameron
84bb9e4d22 Show current theme even if it should be hidden 2015-01-09 15:13:34 -08:00
Jamie Cameron
3e1cf3c298 Hide themes that are just links 2015-01-09 15:12:17 -08:00
Jamie Cameron
43039ddc43 Explicitly login as root, rather than having mysql commands guess this based on the username 2015-01-09 12:49:46 -08:00
Jamie Cameron
5e2c23e0c2 When deleting from an mbox file, open the temp file with root permissions but only if it doesn't yet exist https://github.com/webmin/webmin/issues/184 2015-01-08 23:27:46 -08:00
Jamie Cameron
fd6b3b3529 Correct encoding on french translation http://virtualmin.com/node/35757 2015-01-08 21:46:15 -08:00
Jamie Cameron
c8f8f55f1b Add webprefix to top-frame links http://sourceforge.net/p/webadmin/bugs/4536 2015-01-08 17:44:06 -08:00
Jamie Cameron
39bf55a410 Fix collection of RAID errors 2015-01-08 17:24:58 -08:00
Jamie Cameron
807de6e9ce Hide password in FTP error message http://virtualmin.com/node/35772 2015-01-08 10:54:12 -08:00
Jamie Cameron
6a30643822 Show error message if some disks have failed, even if there is no failure status https://sourceforge.net/p/webadmin/bugs/4497/ 2015-01-07 17:26:54 -08:00
Jamie Cameron
9d84a6fdca Use correct GID function 2015-01-07 13:57:28 -08:00
Jamie Cameron
c8b4672cc8 Use UUIDs in mdadm.conf when creating new arrays, thanks to Caspar Smit 2015-01-06 16:43:49 -08:00
Jamie Cameron
65ee16aad9 Fix error message 2015-01-06 10:13:21 -08:00
Jamie Cameron
fe4758b8eb Add reload button, and change the reload_postfix function to return an error instead of showing it to the user 2015-01-05 15:26:49 -08:00
Jamie Cameron
49e05cbdfe Users are referred to by username now, not index https://sourceforge.net/p/webadmin/bugs/4532/ 2015-01-05 10:41:16 -08:00
Jamie Cameron
8d9a68461d Also recognize a passphrase prompt http://sourceforge.net/p/webadmin/bugs/4531 2015-01-05 10:33:53 -08:00
Jamie Cameron
3037f233ac Gray theme doesn't do the full left menu yet https://sourceforge.net/p/webadmin/usermin-bugs/431/ 2015-01-05 10:15:02 -08:00
Jamie Cameron
852b8d7576 Don't show invalid bar charts 2015-01-05 09:58:23 -08:00
Jamie Cameron
4d0befa26f Remove vars we never use 2015-01-04 23:03:24 -08:00
Jamie Cameron
d39b7875e9 Actually, let modules choose their preferred sort order 2015-01-04 22:53:46 -08:00
Jamie Cameron
5b8308c011 Ensure sub-category items are sorted 2015-01-04 22:43:38 -08:00
Jamie Cameron
c48e9412e2 Give credit for translations 2015-01-04 15:56:00 -08:00
Jamie Cameron
4f1226697e Norwegian update from Stein-Aksel Basma 2015-01-04 15:55:31 -08:00
Jamie Cameron
fb66b43c67 German translation updates from Raymond Vetter 2015-01-03 22:23:17 -08:00
Jamie Cameron
e3bbfdda7c Show critical module versions 2015-01-01 19:13:28 -08:00
Jamie Cameron
b7eb16fe3a German translation updates from Raymond Vetter 2015-01-01 18:22:50 -08:00
512 changed files with 14575 additions and 5996 deletions

View File

@@ -212,3 +212,17 @@ SSL v2 and v3 are now disabled by default at Webmin install time, to block the P
Deprecated the old blue-theme in favor of the new gray-theme.
Catalan translation updates from Jaume Badiella.
More German translation updates, thanks to Raymond Vetter.
---- Changes since 1.730 ----
More German translation updates, thanks to Raymond Vetter.
Norwegian updates, thanks to Stein-Aksel Basma.
The awesome new Authentic Theme by Ilia Rostovtsev is now included in the Webmin package.
Catalan translation updates from Jaume Badiella.
---- Changes since 1.740 ----
Norwegian updates, thanks to Stein-Aksel Basma.
Catalan translation updates from Jaume Badiella.
More German translation updates, thanks to Raymond Vetter.
---- Changes since 1.750 ----
Norwegian updates, thanks to Stein-Aksel Basma.
Catalan translation updates from Jaume Badiella.
More German translation updates, thanks to Raymond Vetter.
Fixed an XSS bug that allowed xmlrpc.cgi to be abused by a malicious link.

2
README
View File

@@ -1,4 +1,4 @@
Webmin Version 1.730
Webmin Version 1.760
--------------------
Webmin is a web-based interface for system administration for Unix.
Using any browser that supports tables and forms, you can setup user

View File

@@ -737,7 +737,7 @@ if ($username ne $user->{'name'} && !$user->{'proto'}) {
if ($miniserv{'session'} && $username ne $user->{'name'}) {
# Modify all sessions for the renamed user
&rename_session_user(\&miniserv, $username, $user->{'name'});
&rename_session_user(\%miniserv, $username, $user->{'name'});
}
}

View File

@@ -257,7 +257,11 @@ else{ /* end IE initialization, try to deal with real browsers now ;-) */
/**
* <p>Emulate IE's onreadystatechange attribute</p>
*/
XMLDocument.prototype.onreadystatechange = null;
try {
XMLDocument.prototype.onreadystatechange = null;
} catch(err) {
// May fail on Chrome 43+
}
/**
* <p>Emulates IE's readyState property, which always gives an integer from 0 to 4:</p>
* <ul><li>1 == LOADING,</li>

View File

@@ -214,15 +214,23 @@ push(@mems, @cmems);
if ($in{'adddir'} && $in{'root'}) {
# Add a <Directory> section for the root
push(@mems, { 'name' => 'Directory',
'value' => "\"$in{'root'}\"",
'type' => 1,
'members' => [
$dirsect = { 'name' => 'Directory',
'value' => "\"$in{'root'}\"",
'type' => 1,
'members' => [
{ 'name' => 'allow',
'value' => 'from all' },
{ 'name' => 'Options',
'value' => 'None' },
] });
],
};
if ($httpd_modules{'core'} >= 2.4) {
# Apache 2.4+ needs a 'Require all granted' line
push(@{$dirsect->{'members'}},
{ 'name' => 'Require',
'value' => 'all granted' });
}
push(@mems, $dirsect);
}
# Save to the file

View File

@@ -220,6 +220,8 @@ foreach $v (@virt) {
if (&find_vdirective("SSLEngine", $vm, $conf, 1) eq "on") {
$prot = "https";
}
$sp = undef if ($sp == 80 && $prot eq "http" ||
$sp == 443 && $prot eq "https");
push(@vurl, $sp ? "$prot://$sn:$sp/" : "$prot://$sn/");
}
@@ -368,10 +370,12 @@ else {
print "<table width=100% cellpadding=5>\n";
for($i=0; $i<@vname; $i++) {
print "<tr class='mainbody ".($i % 2 ? 'row0' : 'row1')."'> <td valign=top align=center nowrap>";
print '<div class="row icons-row inline-row">';
&generate_icon("images/virt.gif", $vname[$i], $vlink[$i],
undef, undef, undef,
$vidx[$i] && $access{'vaddr'} ?
&ui_checkbox("d", $vidx[$i]) : "");
print "</div>\n";
print "</td> <td valign=top>\n";
print "$vdesc[$i]<br>\n";
print "<table width=100%><tr>\n";

View File

@@ -67,6 +67,7 @@ cvirt_ename='$1' no
cvirt_eroot1=Has d'introduir l'arrel dels documents
cvirt_eroot2=No s'ha pogut crear el directori '$1': $2
cvirt_eroot3=No tens permís per utilitzar el directori arrel '$1'
cvirt_eroot4=No hi ha cap usuari definit a la configuracio d'Apache
cvirt_etaken=Ja existeix un servidor virtual amb el mateix nom i el mateix port
cvirt_efile=No s'ha pogut escriure a $1: $2
cvirt_emissing=S'ha afegit el nou servidor virtual a $1, però Apache no està utilitzant aquest fitxer. Comprova la <a href='$2'>configuració del mòdul</a> i assegura't que el 'Fitxer o directori on s'afegeixen els servidors virtuals' és correcte.

View File

@@ -302,10 +302,12 @@ core_outfilter=Bruk output filtere for alle filer
core_overr=Innstillingsfiler kan overstyre..
core_pid=Tjener PID fil
core_port=Port
core_portname=Protokoll
core_proclimit=Prosess begrensing
core_proclimit2=prosess begrensning
core_product=Kun produkt
core_proglog=Program
core_protoany=&lt;Enhver&gt;
core_realm=Navn for autentiseringsomr&#229;de
core_resp=Svar
core_rtout=Tidsavbrudd for foresp&#248;rsel
@@ -341,6 +343,7 @@ cvirt_eport='$1' er ikke en gyldig port
cvirt_eroot1=Du m&#229; oppgi dokumentrot
cvirt_eroot2=Kunne ikke opprette katalog '$1' : $2
cvirt_eroot3=Du har ikke tilgang til &#229; bruke rot-katalogen '$1'
cvirt_eroot4=Ingen bruker definert i Apache konfigurasjonen
cvirt_err=Kunne ikke opprette virtuell tjener
cvirt_etaken=En virtuell tjener med samme navn og port finnes allerede
default_serv=standard tjener

1001
apache/lang/ru.UTF-8 Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -453,7 +453,8 @@ elsif ($mode == 2) {
return undef;
}
=head2 execute_restore(&mods, source, &files, apply, [show-only])
=head2 execute_restore(&mods, source, &files, apply, [show-only],
[&other-files])
Restore configuration files from the specified source for the listed modules.
Returns undef on success, or an error message.
@@ -461,7 +462,7 @@ Returns undef on success, or an error message.
=cut
sub execute_restore
{
my ($mods, $src, $files, $apply, $show) = @_;
my ($mods, $src, $files, $apply, $show, $others) = @_;
# Fetch file if needed
my ($mode, $user, $pass, $host, $path, $port) = &parse_backup_url($src);
@@ -518,7 +519,7 @@ my @tarfiles = map { "/$_" } split(/\r?\n/, $out);
my %tarfiles = map { $_, 1 } @tarfiles;
# Extract manifests for each module
my %hasmod = map { $_, 1 } @{$_[0]};
my %hasmod = map { $_, 1 } @$mods;
$hasmod{"_others"} = 1;
&execute_command("rm -rf ".quotemeta($manifests_dir));
my $rel_manifests_dir = $manifests_dir;
@@ -548,6 +549,7 @@ while($m = readdir(DIR)) {
push(@files, @mfiles);
}
closedir(DIR);
push(@files, @$others) if ($others);
if (!@files) {
&unlink_file($file) if ($mode != 0);
return $text{'backup_enone2'};
@@ -555,15 +557,15 @@ if (!@files) {
# Get descriptions for each module
my %desc;
foreach my $m (@{$_[0]}) {
foreach my $m (@$mods) {
my %minfo = &get_module_info($m);
$desc{$m} = $minfo{'desc'};
}
# Call module pre functions
foreach my $m (@{$_[0]}) {
foreach my $m (@$mods) {
my $mdir = &module_root_directory($m);
if ($m && &foreign_check($m) && !$_[4] &&
if ($m && &foreign_check($m) && !$show &&
-r "$mdir/backup_config.pl") {
&foreign_require($m, "backup_config.pl");
if (&foreign_defined($m, "pre_restore")) {
@@ -577,7 +579,7 @@ foreach my $m (@{$_[0]}) {
}
# Lock all files being extracted
if (!$_[4]) {
if (!$show) {
my $f;
foreach $f (@files) {
&lock_file($f);
@@ -585,7 +587,7 @@ if (!$_[4]) {
}
# Extract contents (only files specified by manifests)
my $flag = $_[4] ? "t" : "x";
my $flag = $show ? "t" : "x";
my $qfiles = join(" ", map { s/^\///; quotemeta($_) } &unique(@files));
if ($gzipped) {
&execute_command("cd / ; gunzip -c $qfile | tar ${flag}f - $qfiles",
@@ -598,7 +600,7 @@ else {
my $ex = $?;
# Un-lock all files being extracted
if (!$_[4]) {
if (!$show) {
my $f;
foreach $f (@files) {
&unlock_file($f);
@@ -611,16 +613,16 @@ if ($ex) {
return &text('backup_euntar', "<pre>$out</pre>");
}
if ($_[3] && !$_[4]) {
if ($apply && !$show) {
# Call all module apply functions
foreach $m (@{$_[0]}) {
foreach $m (@$mods) {
if (&foreign_defined($m, "post_restore")) {
&foreign_call($m, "post_restore", \@files);
}
}
}
@{$_[2]} = @files;
@$files = split(/\n/, $out);
return undef;
}

View File

@@ -89,6 +89,9 @@ print &ui_table_row($text{'edit_mods2'},
[ map { [ $_->{'dir'}, $_->{'desc'} ] } @mods ],
5, 1));
print &ui_table_row($text{'edit_other2'},
&ui_textarea("others", undef, 3, 50));
print &ui_table_row($text{'edit_dest2'},
&show_backup_destination("src", $config{'dest'}, 1));

View File

@@ -35,6 +35,7 @@ edit_schedyes=S
edit_mods=Mòduls a copiar
edit_dest=Destinació de la còpia
edit_mods2=Mòduls a restaurar
edit_other2=Altres fitxers a restaurar
edit_dest2=Restaura de
edit_what=Inclou en la còpia
edit_webmin=Fitxers de configuració dels mòduls Webmin
@@ -83,6 +84,7 @@ backup_failed=... ha fallat! $1
backup_done=... completa. La mida final de la còpia és de $1 i conté $2 fitxers.
restore_err=La restauració ha fallat
restore_emods=No has seleccionat cap mòdul ni cap altre fitxer
restore_title=Configuració de Restauració
restore_doing=S'està començant la restauració dels fitxers de configuració de mòduls de $1...
restore_testing=S'està extraient el contingut de la còpia de $1...

View File

@@ -43,6 +43,7 @@ edit_mods=Module zum Sichern
edit_mods2=Module zum Zur&#252;ckschreiben
edit_nofiles=Server-Konfigurationsdateien
edit_other=Andere ausgew&#228;hlte Dateien ..
edit_other2=Andere Dateien zum Wiederherstellen
edit_post=Befehle nach dem Backup
edit_pre=Befehle vor dem Backup
edit_return=Sicherungsformular
@@ -99,6 +100,7 @@ nice_upload=Hochgeladene Datei
restore_doing=Starte Wiederherstellung der Modulkonfigurationsdateien von $1 ..
restore_done=.. fertig. $1 Dateien wurde wiederhergestellt.
restore_done2=.. Dateien im Backup sind :
restore_emods=Keine Module oder andere Dateien ausgew&#228;hlt
restore_err=Wiederherstellung gescheitert!
restore_failed=.. gescheitert! $1
restore_testing=Extrahiere Inhalt von Backup von $1 ..

View File

@@ -35,6 +35,7 @@ edit_schedyes=Yes, at times selected below ..
edit_mods=Modules to backup
edit_dest=Backup destination
edit_mods2=Modules to restore
edit_other2=Other files to restore
edit_dest2=Restore from
edit_what=Include in backup
edit_webmin=Webmin module configuration files
@@ -83,6 +84,7 @@ backup_failed=.. failed! $1
backup_done=.. complete. Final backup size was $1, containing $2 files.
restore_err=Restore failed
restore_emods=No modules or other files selected
restore_title=Restore Configuration
restore_doing=Starting restore of module configuration files from $1 ..
restore_testing=Extracting contents of backup from $1 ..

View File

@@ -43,6 +43,7 @@ edit_mods=Moduler som skal sikkerhetskopieres
edit_mods2=Moduler som skal gjenopprettes
edit_nofiles=Tjener konfigurasjonsfiler
edit_other=Andre listede filer ..
edit_other2=Andre filer &#229; gjenopprette
edit_post=Post-sikkerhetskopi kommando
edit_pre=Pre-sikkerhetskopi kommando
edit_return=backup skjema
@@ -99,6 +100,7 @@ nice_upload=lastet opp fil
restore_doing=Starter gjenoppretting av modulkonfigurasjonsfiler fra $1 ..
restore_done=.. fullf&#248;rt. $1 filer ble gjenopprettet.
restore_done2=.. filer i sikkerhetskopien er :
restore_emods=Ingen moduler eller andre filer valgt
restore_err=Gjenoppretting feilet
restore_failed=.. feilet! $1
restore_testing=Pakker ut innhold av sikkerhetskopi fra $1 ..

View File

@@ -11,7 +11,8 @@ our (%in, %text, %config, $module_config_file);
&error_setup($text{'restore_err'});
my $src = &parse_backup_destination("src", \%in);
my @mods = split(/\0/, $in{'mods'});
@mods || &error($text{'restore_emods'});
my @others = split(/[\r\n]+/, $in{'others'});
@mods || @others || &error($text{'restore_emods'});
# Do it ..
my ($mode, $user, $pass, $server, $path, $port) = &parse_backup_url($src);
@@ -27,7 +28,8 @@ if ($mode == 3) {
print &text($in{'test'} ? 'restore_testing' : 'restore_doing',
&nice_dest($src)),"<p>\n";
my @files;
my $err = &execute_restore(\@mods, $src, \@files, $in{'apply'}, $in{'test'});
my $err = &execute_restore(\@mods, $src, \@files, $in{'apply'}, $in{'test'},
\@others);
&unlink_file($src) if ($mode == 3);
if ($err) {
print &text('restore_failed', $err),"<p>\n";

View File

@@ -819,14 +819,17 @@ local $jobs = &console_cmd($h, "show jobs");
local @rv;
local $job;
foreach my $l (split(/\r?\n/, $jobs)) {
if ($l =~ /^Job:\s+name=([^=]*\S)\s/) {
if ($l =~ /^Job:\s+name=([^=]*\S)\s/ ||
$l =~ /^\s*Name\s*=\s*"(.*)"/) {
$job = { 'name' => $1 };
push(@rv, $job);
}
elsif ($l =~ /Client:\s+name=([^=]*\S)\s/ && $job) {
elsif (($l =~ /Client:\s+name=([^=]*\S)\s/ ||
$l =~ /^\s*Client\s*=\s*"(.*)"/) && $job) {
$job->{'client'} = $1;
}
elsif ($l =~ /FileSet:\s+name=([^=]*\S)\s/ && $job) {
elsif (($l =~ /FileSet:\s+name=([^=]*\S)\s/ ||
$l =~ /^FileSet\s*=\s*"(.*)"/) && $job) {
$job->{'fileset'} = $1;
}
}
@@ -843,7 +846,8 @@ local $clients = &console_cmd($h, "show clients");
local @rv;
local $client;
foreach my $l (split(/\r?\n/, $clients)) {
if ($l =~ /^Client:\s+name=([^=]*\S)\s/) {
if ($l =~ /^Client:\s+name=([^=]*\S)\s/ ||
$l =~ /^\s*Name\s*=\s*"(.*)"/) {
$client = { 'name' => $1 };
if ($l =~ /address=(\S+)/ && $client) {
$client->{'address'} = $1;
@@ -853,6 +857,12 @@ foreach my $l (split(/\r?\n/, $clients)) {
}
push(@rv, $client);
}
elsif ($l =~ /^\s*Address\s*=\s*"(.*)"/ && $client) {
$client->{'address'} = $1;
}
elsif ($l =~ /^\s*FDport\s*=\s*"(.*)"/ && $client) {
$client->{'port'} = $1;
}
}
return @rv;
}
@@ -867,7 +877,8 @@ local $storages = &console_cmd($h, "show storages");
local @rv;
local $storage;
foreach my $l (split(/\r?\n/, $storages)) {
if ($l =~ /^Storage:\s+name=([^=]*\S)\s/) {
if ($l =~ /^Storage:\s+name=([^=]*\S)\s/ ||
$l =~ /^\s*Name\s*=\s*"(.*)"/) {
$storage = { 'name' => $1 };
if ($l =~ /address=(\S+)/) {
$storage->{'address'} = $1;
@@ -877,6 +888,12 @@ foreach my $l (split(/\r?\n/, $storages)) {
}
push(@rv, $storage);
}
elsif ($l =~ /^\s*Address\s*=\s*"(.*)"/ && $storage) {
$storage->{'address'} = $1;
}
elsif ($l =~ /^\s*SDport\s*=\s*"(.*)"/ && $storage) {
$storage->{'port'} = $1;
}
}
return @rv;
}
@@ -891,13 +908,17 @@ local $pools = &console_cmd($h, "show pools");
local @rv;
local $pool;
foreach my $l (split(/\r?\n/, $pools)) {
if ($l =~ /^Pool:\s+name=([^=]*\S)\s/) {
if ($l =~ /^Pool:\s+name=([^=]*\S)\s/ ||
$l =~ /^\s*Name\s*=\s*"(.*)"/) {
$pool = { 'name' => $1 };
if ($l =~ /PoolType=(\S+)/) {
$pool->{'type'} = $1;
}
push(@rv, $pool);
}
elsif ($l =~ /^\s*PoolType\s*=\s*"(.*)"/ && $pool) {
$pool->{'type'} = $1;
}
}
return @rv;
}

View File

@@ -371,35 +371,57 @@ log_delete_pool=Volume-Pool $1 gel&#246;scht
log_delete_pools=$1 Volume-Pools gel&#246;scht
log_delete_schedule=Backup-Zeitplan $1 gel&#246;scht
log_delete_schedules=$1 Backup-Zeitplan gel&#246;scht
log_delete_sdirector=Speicher-Daemon-Direktor $1 gel&#246;scht
log_delete_sdirectors=$1 Speicher-Daemon-Direktoren gel&#246;scht
log_delete_storage=Storage Daemon $1 gel&#246;scht
log_delete_storages=$1 Storage Daemons gel&#246;scht
log_director=Globale Bacula-Director-Konfiguration gespeichert
log_file=Bacula Datei Daemonkonfiguration gespeichert
log_fixpass=Bacula Konsolenprogramm Passwort behoben
log_gbackup=Bacula Gruppensicherungsjob $1 gestartet
log_label=Speicher-Daemon $1 gelabelt
log_modify_client=Backup Client $1 modifiziert
log_modify_device=Speicher-Ger&#228;t $1 modifiziert
log_modify_fdirector=Datei-Daemon-Direktor $1 modifiziert
log_modify_fileset=Dateisatz $1 modifiziert
log_modify_gjob=Bacula-Gruppe Sicherungsjob $1 modifiziert
log_modify_group=Bakula Gruppe $1 editiert
log_modify_job=Backup-Job $1 modifiziert
log_modify_pool=Volume Pool $1 modifiziert
log_modify_schedule=Backup-Zeitplan $1 ge&#228;ndert
log_modify_sdirector=Speicher-Daemon-Direktor $1 modifiziert
log_modify_storage=Speicher-Daemon $1 modifiziert
log_mount=Speicher-Ger&#228;t $1 gemounted
log_restart=Bacula Daemons wieder gestartet
log_start=Bacula Daemons gestartet
log_stop=Bacula Daemons gestoppt
log_storagec=Bacula Speicher Daemon-Konfiguration gespeichert
log_sync=Bacula-Gruppensynchronisierung gespeichert
log_unmount=Speicher-Ger&#228;t $1 unmounted
mount_done=.. erfolgreicht gemountet.
mount_err=Fehlgeschlagen Speicher-Ger&#228;t zu mounten
mount_eslot=Fehlende oder ung&#252;ltige Slot Nummer
mount_failed=.. mounten fehlgeschlagen! Siehe die Fehlermeldung f&#252;r den Grund oben.
mount_header=Speicher mount oder unmount Optionen
mount_mount=Montierungsspeicher
mount_noslot=Nichts
mount_return=montiert von
mount_run=Mounte Volume auf Speicher-Ger&#228;t $1 ..
mount_slot=Auto-Lader-Slot
mount_slotno=Slotnummer
mount_storage=Speicherger&#228;t
mount_title=Mount oder Unmount
mount_unmount=Unmounte Speicher
pool_any=Sichere an jedes Volume in Pool?
pool_auto=Streiche abgelaufene Volumes?
pool_autolabel=Automatisch Volumes Pr&#228;fix beschriften
pool_echild=Dieser Client kann nicht gel&#246;scht werden, da dieser von $1 genutzt wird
pool_eclash=Ein Speicherger&#228;t mit dem gleichen Namen ist bereits vorhanden
pool_egone=Volume Pool existiert nicht l&#228;nger!
pool_emax=Fehlende oder ung&#252;ltige maximale Anzahl an Jobs pro Volume
pool_ename=Fehlender Speicherger&#228;t-Name
pool_ereten=Fehlende oder ung&#252;ltige Aufbewahrungsfrist
pool_err=Fehlgeschlagen Speicherger&#228;t zu speichern
pool_header=Details vom Backup Volume Pool
pool_max=Maximale Jobs pro Volume
pool_maxvolsize=Maximale Volume Gr&#246;&#223;e (z.B. 5G f&#252;r 5 Gigabyte)
@@ -413,6 +435,7 @@ pool_type=Volume Pool Typ
pool_unlimited=Unlimitiert
pools_add=F&#252;ge einen neuen Volume Pool hinzu.
pools_delete=L&#246;sche ausgew&#228;hlte Datentr&#228;ger-Pools
pools_derr=Fehlgeschlagen Volume-Pools zu l&#246;schen
pools_name=Pool Name
pools_none=Keine Volume Pools wurden bisher definiert.
pools_reten=Aufbewahrungsfrist
@@ -443,6 +466,8 @@ restore_all=--Alle Clients in Gruppe--
restore_client=Wiederherstelle zu Client oder Gruppe
restore_clist=--Clients--
restore_done=...Wiederherstellung komplett.
restore_eall1=Die <b>Alle Clients in Backup</b> Option muss f&#252;r <b>Wiederherstellen zum Client oder Gruppen</b> ausgew&#228;hlt werden, wenn eine Gruppe Bacula Job wiederhergestellt werden soll.
restore_eall2=Die <b>Alle Clients in Backup</b> Option kann nur gew&#228;hlt werden, f&#252;r <b>Stelle Clients und Gruppen wieder her</b>, wenn dabei eine Gruppe Bacula Job wiederhergestellt wird
restore_eclient=Kein Client oder Backup Gruppe ausgew&#228;hlt
restore_eclients=Keine Mitglieder der Bacula-Gruppe gefunden!
restore_efiles=Keine Dateien eingegeben
@@ -483,17 +508,24 @@ schedule_header=Sicherungszeitplan Details
schedule_level=Backup Level
schedule_name=Sicherungszeitplan Name
schedule_pool=Volume
schedule_runs=Level und Zeiten ausf&#252;hren
schedule_times=L&#228;uft um
schedule_title1=Erstelle Backup-Zeitplan
schedule_title2=Editiere Backup-Zeitplan
schedules_add=F&#252;ge einen neuen Backup-Zeitplan hinzu.
schedules_delete=L&#246;sche ausgew&#228;hlte Zeitpl&#228;ne
schedules_derr=Fehlgeschlagen Zeitpl&#228;ne zu l&#246;schen
schedules_name=Zeitplan Name
schedules_none=Keine Sicherungspl&#228;ne wurden bisher festgelegt.
schedules_return=Liste der Zeitpl&#228;ne
schedules_sched=Level und Zeiten ausf&#252;hren
schedules_title=Backup-Zeitpl&#228;ne
sdirector_eclash=Ein Direktor mit dem gleichen Namen ist bereits vorhanden
sdirector_egone=Director existiert nicht l&#228;nger!
sdirector_ename=Fehlender Director Name
sdirector_epass=Fehlendes Passwort
sdirector_err=Fehlgeschlagen Speicherdaemon-Direktor zu speichern
sdirector_header=Details des Steuerung Remote Director
sdirector_monitor=Nur &#220;berwachung der Verbindung erlauben?
sdirector_name=Director Name
sdirector_pass=Akzeptiertes Passwort

View File

@@ -142,3 +142,5 @@ Added a warning if the chroot directory that Webmin thinks BIND is using looks w
Slave zone files in raw format can now be displayed by Webmin.
---- Changes since 1.720 ----
Added support for NSEC3PARAM records.
---- Changes since 1.730 ----
Added support for editing DMARC records, which are specially encoded TXT records for defining the response to SPF and DKIM violations.

View File

@@ -42,6 +42,26 @@ foreach $v (sort { $a->{'value'} cmp $b->{'value'} } @views) {
}
print "</select></td> </tr></table></td></tr>\n";
if (@views) {
print "<tr> <td valign=top><b>$text{'acl_inviews'}</b></td>\n";
print "<td colspan=3>\n";
print &ui_radio("inviews_def", $_[0]->{'inviews'} eq "*" ? 1 : 0,
[ [ 1, $text{'acl_vall'} ],
[ 0, $text{'acl_vsel'} ] ]),"<br>\n";
print "<select name=inviews multiple size=4 width=150>\n";
local ($v, %vcan);
map { $vcan{$_}++ } split(/\s+/, $_[0]->{'inviews'});
printf "<option value='%s' %s>%s</option>\n",
"_", $vcan{"_"} ? "selected" : "",
"&lt;".$text{'acl_toplevel'}."&gt;";
foreach $v (sort { $a->{'value'} cmp $b->{'value'} } @views) {
printf "<option value='%s' %s>%s</option>\n",
$v->{'value'},
$vcan{$v->{'value'}} ? "selected" : "", $v->{'value'};
}
print "</select></td></tr>\n";
}
print "<tr> <td><b>$text{'acl_types'}</b></td> <td colspan=3>\n";
printf "<input type=radio name=types_def value=1 %s> %s\n",
$_[0]->{'types'} ? "" : "checked", $text{'acl_types1'};
@@ -204,6 +224,8 @@ elsif ($in{'zones_def'} == 2) {
else {
$_[0]->{'zones'} = join(" ", split(/\0/, $in{'zones'}));
}
$_[0]->{'inviews'} = $in{'inviews_def'} ? "*" :
join(" ", split(/\0/, $in{'inviews'}));
$_[0]->{'types'} = $in{'types_def'} ? undef : $in{'types'};
$_[0]->{'master'} = $in{'master'} || 0;
$_[0]->{'slave'} = $in{'slave'} || 0;

View File

@@ -879,8 +879,20 @@ elsif ($access{'zones'} =~ /^\!/) {
else {
# List of allowed zones
local $ok;
foreach (split(/\s+/, $access{'zones'})) {
$ok++ if ($_ eq $zn || ($vn && $_ eq $vn));
foreach my $z (split(/\s+/, $access{'zones'})) {
$ok++ if ($z eq $zn || ($vn && $z eq $vn));
}
return 0 if (!$ok);
}
# Check allowed view
if ($access{'inviews'} eq '*') {
# All views are OK
}
else {
local $ok;
foreach my $v (split(/\s+/, $access{'inviews'})) {
$ok++ if ($v eq ($vn || "_"));
}
return 0 if (!$ok);
}
@@ -1124,6 +1136,39 @@ elsif ($type eq "SPF") {
&ui_opt_textbox("spfexp", $spf->{'exp'}, 40,
$text{'value_spfnoexp'}), 3);
}
elsif ($type eq "DMARC") {
# Like SPF, DMARC records have several attributes encoded in the
# TXT value
local $dmarc = &parse_dmarc(@v);
local @popts = ( [ "none", $text{'value_dmarcnone'} ],
[ "quarantine", $text{'value_dmarcquar'} ],
[ "reject", $text{'value_dmarcreject'} ] );
print &ui_table_row($text{'value_dmarcp'},
&ui_select("dmarcp", $dmarc->{'p'}, \@popts));
print &ui_table_row($text{'value_dmarcpct'},
&ui_textbox("dmarcpct", $dmarc->{'pct'}, 5)."%");
print &ui_table_row($text{'value_dmarcsp'},
&ui_select("dmarcsp", $dmarc->{'sp'},
[ [ "", $text{'value_dmarcnop'} ], @popts ]));
print &ui_table_row($text{'value_dmarcaspf'},
&ui_yesno_radio("dmarcaspf", $dmarc->{'aspf'} eq 's'));
print &ui_table_row($text{'value_dmarcadkim'},
&ui_yesno_radio("dmarcadkim", $dmarc->{'adkim'} eq 's'));
local $rua = $dmarc->{'rua'};
$rua =~ s/^mailto://;
print &ui_table_row($text{'value_dmarcrua'},
&ui_opt_textbox("dmarcrua", $rua, 50, $text{'value_dmarcnor'}), 3);
local $ruf = $dmarc->{'ruf'};
$ruf =~ s/^mailto://;
print &ui_table_row($text{'value_dmarcruf'},
&ui_opt_textbox("dmarcruf", $ruf, 50, $text{'value_dmarcnor'}), 3);
}
elsif ($type eq "NSEC3PARAM") {
# NSEC records have a hash type, flags, number of interations, salt
# length and salt
@@ -1957,6 +2002,7 @@ sub restart_bind
if ($config{'restart_cmd'} eq 'restart') {
# Stop and start again
&stop_bind();
sleep(1); # Systemd doesn't like rapid stops and starts
return &start_bind();
}
elsif ($config{'restart_cmd'}) {
@@ -2772,7 +2818,7 @@ $slave_error = $_[0];
sub get_forward_record_types
{
return ("A", "NS", "CNAME", "MX", "HINFO", "TXT", "SPF", "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", "NSEC3PARAM", $config{'support_aaaa'} ? ( "AAAA" ) : ( ), @extra_forward);
}
sub get_reverse_record_types

View File

@@ -14,6 +14,10 @@ $file = &find("file", $zconf->{'members'});
if (!$file) {
&error($text{'convert_efile'});
}
$file = &make_chroot(&absolute_path($file));
if (!-s $file) {
&error(&text('convert_efilesize', $file));
}
&lock_file(&make_chroot($zconf->{'file'}));
# Change the type directive
@@ -26,5 +30,19 @@ if (!$file) {
&flush_file_lines();
&unlock_file(&make_chroot($zconf->{'file'}));
# Convert from binary slave format to text
if (&is_raw_format_records($file)) {
&has_command("named-compilezone") ||
&error($text{'convert_ebinary'});
$temp = &transname();
&copy_source_dest($file, $temp);
$out = &backquote_logged("named-compilezone -f raw -F text ".
"-o $file $zone->{'name'} $temp 2>&1");
&error(&text('convert_ecompile', "<tt>".&html_escape($out)."</tt>"))
if ($?);
&unlink_file($temp);
}
&redirect("");

View File

@@ -19,28 +19,36 @@ $typedesc = $text{"recs_$in{'type'}"} || $in{'type'};
$type = $zone->{'type'};
$file = $zone->{'file'};
$form = 0;
$newname = $in{'newname'} || ($in{'type'} eq 'DMARC' ? '_dmarc' : undef);
if (!$access{'ro'} && $type eq 'master' && $in{'type'} ne 'ALL') {
&record_input($in{'zone'}, $in{'view'}, $in{'type'}, $file, $dom,
undef, undef, $in{'newname'}, $in{'newvalue'});
undef, undef, $newname, $in{'newvalue'});
$form++;
$shown_create_form = 1;
}
# Show search form
print &ui_form_start("edit_recs.cgi");
print &ui_hidden("zone", $in{'zone'}),"\n";
print &ui_hidden("view", $in{'view'}),"\n";
print &ui_hidden("type", $in{'type'}),"\n";
print "<b>$text{'recs_find'}</b>\n";
print &ui_textbox("search", $in{'search'}, 20),"\n";
print &ui_submit($text{'recs_search'}),"<p>\n";
print &ui_form_end();
$form++;
if (!$config{'largezones'} || $in{'search'}) {
# Get all records
@allrecs = grep { !$_->{'generate'} && !$_->{'defttl'} }
&read_zone_file($file, $dom);
$nosearch = 1 if (!@allrecs);
}
if (!$nosearch) {
# Show search form
print &ui_form_start("edit_recs.cgi");
print &ui_hidden("zone", $in{'zone'}),"\n";
print &ui_hidden("view", $in{'view'}),"\n";
print &ui_hidden("type", $in{'type'}),"\n";
print "<b>$text{'recs_find'}</b>\n";
print &ui_textbox("search", $in{'search'}, 20),"\n";
print &ui_submit($text{'recs_search'}),"<p>\n";
print &ui_form_end();
$form++;
}
if (!$config{'largezones'} || $in{'search'}) {
# Get all records
if ($in{'search'}) {
# Limit to records matching some search
foreach $r (@allrecs) {

View File

@@ -44,6 +44,9 @@ print &address_input($text{'master_query'}, "allow-query", $vconf);
print &address_input($text{'master_notify2'}, "also-notify", $vconf);
print &address_input($text{'master_notify3'}, "allow-notify", $vconf);
$src = &find("transfer-source", $vconf);
print &ui_table_row($text{'net_taddr'}, &ui_textbox("transfer-source", $src->{'values'}->[0], 15));
print &ui_table_end();
if ($access{'ro'}) {

BIN
bind8/images/DMARC.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

BIN
bind8/images/NSEC3PARAM.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

View File

@@ -293,6 +293,11 @@ edit_espfip6='$1' no
edit_espfinclude='$1' no és un domini addicional remitent vàlid
edit_espfredirect='$1' no és un nom de domini alternatiu vàlid
edit_espfexp='$1' és un nom de registre vàlid per a un missatge de rebuig
edit_ensec3value2=Hi falfa el nombre d'iteracions o bé no és numèric
edit_ensec3value3=Hi falta la sal no base64 o bé és incorrecta
edit_edmarcpct=El percentatge de missatges ha de ser un enter entre 0 i 100
edit_edmarcrua=Hi falta l'adreça de la informació agregada
edit_edmarcruf=Hi falta l'adreça de la informació forense
text_title=Edició del Fitxer de Registres
text_title2=Visualització del Fitxer de Registres
@@ -369,8 +374,10 @@ type_NS=Servidor de Noms
type_CNAME=Àlies del Nom
type_MX=Servidor de Correu
type_HINFO=Informació del Host
type_NSEC3PARAM=Paràmetres DNSSEC
type_TXT=Text
type_SPF=Remitent Permès des de
type_DMARC=DMARC
type_WKS=Servei Conegut (WKS)
type_RP=Persona Responsable
type_PTR=Adreça Inversa
@@ -387,12 +394,14 @@ edit_MX=Servidor de Correu
edit_HINFO=Informació del Host
edit_TXT=Text
edit_SPF=Remitent Permès des de
edit_DMARC=DMARC
edit_WKS=Servei Conegut (WKS)
edit_RP=Persona Responsable
edit_PTR=Adreça Inversa
edit_LOC=Ubicació
edit_SRV=Adreça del Servei
edit_KEY=Clau Pública
edit_NSEC3PARAM=Paràmetres DNSSEC
recs_defttl=TTL per defecte
recs_A=Adreça
@@ -403,6 +412,7 @@ recs_MX=Servidor de Correu
recs_HINFO=Informació del Host
recs_TXT=Text
recs_SPF=Remitent Permès des de
recs_DMARC=DMARC
recs_WKS=Servei Conegut (WKS)
recs_RP=Persona Responsable
recs_PTR=Adreça Inversa
@@ -410,6 +420,7 @@ recs_LOC=Ubicaci
recs_SRV=Adreça de Servei
recs_ALL=Tot
recs_KEY=Clau Pública
recs_NSEC3PARAM=Paràmetres DNSSEC
recs_delete=Suprimeix els Seleccionats
value_A1=Adreça
@@ -437,6 +448,14 @@ value_KEY2=Protocol
value_KEY3=Algoritme
value_KEY4=Dades de la clau
value_SPF1=Especificació SPF
value_DMARC1=Especificació DMARC
value_NSEC3PARAM1=Algoritme de hash
value_NSEC3PARAM2=Banderes NSEC3
value_NSEC3PARAM3=Nombre d'iteracions del hash
value_NSEC3PARAM4=Llargada de la sal
value_NSEC3PARAM5=Cadena de sal
value_delegated=Zona delegada
value_notdelegated=Una altra zona
value_other=Valors (un per línia)
value_spfa=Permet l'enviament des de l'adreça IP del domini
value_spfmx=Permet l'enviament des dels hosts MX del domini
@@ -456,6 +475,18 @@ value_spfredirect=Utilitza un registre SPF d'un domini alternatiu
value_spfnoredirect=Utilitza el registre d'aquest domini
value_spfexp=Registre TXT pel al motiu del rebuig
value_spfnoexp=Cap
value_dmarcnone=No prenguis cap acció
value_dmarcquar=Posa el coreu en quarantena
value_dmarcreject=Rebutja el correu
value_dmarcp=Política per als correus que no passen SPF o DKIM
value_dmarcpct=Percentatge de missatges a aplicar-hi la política
value_dmarcrua=Envia la informació agregada a
value_dmarcruf=Envia la informació forense a
value_dmarcsp=Política dels subdominis
value_dmarcnop=Igual que aquest domini
value_dmarcaspf=Requereix alineació SPF estricta
value_dmarcadkim=Requereix alineació DKIM estricta
value_dmarcnor=No ho enviïs
warn=Avisa
fail=Falla
@@ -793,6 +824,9 @@ log_dnssec=S'ha canviat la resignatura de la clau
convert_err=No s'ha pogut convertir la zona
convert_efile=Cal especificar un fitxer de registres abans de poder convertir una zona esclava a una de mestra.
convert_efilesize=El fitxer de resistres $1 no existeix o bé està buit
convert_ebinary=L'ordre necessària per convertir una zona esclava binària a format text mestre no està instal·lada
convert_ecompile=La conversió de format binari a text ha fallat: $1
whois_title=Informació WHOIS
whois_header=Resultat de l'ordre $1...
@@ -852,9 +886,9 @@ vdelete_move=Despla
gen_title=Generadors de Registres
gen_desc=Aquesta pàgina permet definir generadors, cadascun dels quals crearà múltiples registres en aquesta zona utilitzant un comptador incremental. Això pot ser útil per a delegar parts de la zona inversa a un altre servidor.
gen_range=Abast
gen_name=Patró d'adreça
gen_name=Patró del nom de registre
gen_type=Tipus
gen_value=Patró de nom de host
gen_value=Patró del valor de registre
gen_cmt=Comentari
gen_skip=cada
gen_show=Mostra els registres generats

View File

@@ -106,7 +106,10 @@ controls_unixopt=Erlaube Kontrolle &#252;ber Unix-FIFO?
controls_unixowner=FIFO ist in Besitz von Benutzer
controls_unixperm=Berechtigungen auf FIFO
controls_unixyes=Ja, benutze Datei $1
convert_ebinary=Der Befehl, welcher ben&#246;tigt wird, um von einem bin&#228;ren Slave-Zone in ein Textformat-Master zu konvertieren, ist nicht installiert
convert_ecompile=Bin&#228;r zu Text-Formatkonvertierung fehlgeschlagen : $1
convert_efile=Bevor eine Slave-Zone in eine Master-Zone umgewandelt werden kann, muss eine Datensatzdatei angegeben werden.
convert_efilesize=Eintr&#228;ge-Datei $1 existiert nicht oder ist leer
convert_err=Zone konnte nicht umgewandelt werden
create_edom='$1' ist kein g&#252;ltiger Domainname
create_edom2='$1' muss eine Domain und kein Netzwerk sein
@@ -185,6 +188,7 @@ dt_zone_createkrf=Erstelle keyrec Datei f&#252;r die Zone $1 und verschiebe Schl
dt_zone_deleting_state=L&#246;sche aller Zust&#228;nde, die mit Zone $1 verbunden sind ...
dt_zone_desc=Diese Zone hat noch nicht bisher DNSSEC aktiviert. Sie k&#246;nnen dieses Formular nutzen, um Webmin mit DNSSEC-Tools automatisieren, so dass die Clients der Zone durch dieser Zone gegen DNS-Spoofing-Attacken gesch&#252;tzt sind.
dt_zone_disable=Deaktiviere DNSSEC
dt_zone_disabledesc=Entfernt diese Zone aus der Liste der Zonen, die durch DNSSEC-Tools f&#252;r die Zone-Signierung und Schl&#252;sselaustausch verwaltet werden.
dt_zone_dne=Authentifizierter Denial of Existence
dt_zone_done=... fertig
dt_zone_dssep=DS Eintrag :
@@ -213,6 +217,7 @@ dt_zone_zskroll=Roll ZSK
edit_A=Adresse
edit_AAAA=IPv6-Adresse
edit_CNAME=Namens-Alias
edit_DMARC=DMARC
edit_HINFO=Host-Information
edit_KEY=&#214;ffentlicher Schl&#252;ssel
edit_LOC=Ortsangabe
@@ -238,6 +243,9 @@ edit_ecname='$1' ist kein g&#252;ltiges Alias-Ziel
edit_ecname1=Ein Aliaseintrag darf nicht den gleichen Namen haben wie ein schon existierender Eintrag.
edit_ecname2=Es kann kein Eintrag erstellt werden, der den gleichen Namen hat wie ein bereits existierender Aliaseintrag.
edit_edit=Bearbeite $1 Datensatz
edit_edmarcpct=Prozentsatz der Nachrichten muss eine ganze Zahl zwischen 0 und 100 sein
edit_edmarcrua=Fehlende aggregierte Feedback Adresse
edit_edmarcruf=Fehlende forensische Informationsadresse
edit_edupip=Es existiert bereits ein Adressdatensatz f&#252;r $1
edit_eemail='$1' ist keine g&#252;ltige E-Mail-Adresse
edit_eflags='$1' ist keine g&#252;ltige dezimale oder hexadezimale Flagzahl
@@ -269,6 +277,7 @@ edit_espfinclude='$1' ist keine g&#252;ltige zus&#228;tzliche Domain von der E-M
edit_espfip='$1' ist keine g&#252;ltige IP-Adresse oder IP/Netzmaske um den Versand zu erlauben
edit_espfip6='$1' ist keine g&#252;ltige IPv6 Adresse oder IPv6/prefix von dem gesendet werden kann
edit_espfmx='$1' ist kein g&#252;ltiger Domainname um vom MX aus zu senden
edit_espfmxmax=Sie d&#252;rfen nicht mehr als 10 Domains erlauben MX zu senden von
edit_espfredirect='$1' ist kein alternativer Domainname
edit_etarget='$1' ist kein g&#252;ltiger Servername oder keine g&#252;ltige IP-Adresse.
edit_ettl='$1' ist keine g&#252;ltige Time-To-Live
@@ -362,7 +371,7 @@ gen_eskip=Fehlende oder ung&#252;ltige Schrittweite f&#252;r den Eintrag $1
gen_estart=Fehlender oder ung&#252;ltiger Startwert f&#252;r Eintrag $1
gen_estop=Fehlender oder ung&#252;ltiger Eintrag f&#252;r das Ende des Bereiches beim Eintrag $1
gen_evalue=Fehlendes oder ung&#252;ltiges Hostnamemuster beim Eintrag $1
gen_name=Adressmuster
gen_name=Eintrag-Namensmuster
gen_range=Bereich
gen_raw=Zeile der Konfigurationsdatei
gen_show=Zeige generierte Eintr&#228;ge
@@ -370,7 +379,7 @@ gen_skip=Schrittweite
gen_title=Generierung von fortlaufenden Eintr&#228;gen
gen_title2=Erzeugte Eintr&#228;ge
gen_type=Typ
gen_value=Hostnamemuster
gen_value=Eintrag-Wertmuster
hcreate_desc=Die Root-Zone wird vom DNS-Server benutzt, um sich mit den Root-Servern im Internet zu verbinden, so dass er Namen in Domains aufl&#246;sen kann, die diesem DNS-Server nicht bekannt sind, z.B. <tt>.com</tt> oder <tt>.net.au</tt>. Wenn Sie mit mehreren Ansichten arbeiten, ben&#246;tigen Sie eventuell eine eigene Root-Zone in jeder Ansicht, so dass alle Clients die Internet Domains korrekt aufl&#246;sen k&#246;nnen.
hcreate_down=Download von Root FTP-Server
hcreate_ecannot=Sie haben keine Berechtigung, eine Root-Zone zu erstellen
@@ -485,6 +494,7 @@ log_delete_view=Ansicht $1 gel&#246;scht
log_delete_zones=$1 Zonen gel&#246;scht
log_files=Dateien und Verzeichnisse ge&#228;ndert
log_forwarding=Forwarding und Transfer ge&#228;ndert
log_freeze=Zone $1 eingefroren
log_hint=Root-Zone erstellt
log_keys=DNS-Schl&#252;ssel ge&#228;ndert
log_logging=Logging und Fehler ge&#228;ndert
@@ -508,6 +518,7 @@ log_start=Gestarteter DNS-Server
log_stop=Gestoppter DNS-Server
log_stub=Stub Zone $1 erstellt
log_text=Datens&#228;tze f&#252;r $1 manuell bearbeitet
log_thaw=Zone $1 aufgetaut
log_trusted=DNSSEC Verifikation ge&#228;ndert
log_update_zones=Eintr&#228;ge in $1 Zonen ge&#228;ndert
log_view=Erstellte Ansicht $1
@@ -763,6 +774,7 @@ recs_A=Adresse
recs_AAAA=IPv6-Adresse
recs_ALL=alle
recs_CNAME=Namens-Alias
recs_DMARC=DMARC
recs_HINFO=Host-Information
recs_KEY=&#214;ffentlicher Schl&#252;ssel
recs_LOC=Ortsangabe
@@ -958,6 +970,7 @@ type_A=Adresse
type_AAAA=IPv6-Adresse
type_ALL=Alle Eintr&#228;ge
type_CNAME=Namens-Alias
type_DMARC=DMARC
type_HINFO=Host-Information
type_KEY=&#214;ffentlicher Schl&#252;ssel
type_LOC=Ortsangabe
@@ -990,6 +1003,7 @@ umass_type=Eintragsarten f&#252;r Aktualisierung
value_A1=Adresse
value_AAAA1=IPv6-Adresse
value_CNAME1=Wirklicher Name
value_DMARC1=DMARC Spezifikation
value_HINFO1=Hardware
value_HINFO2=Betriebssystem
value_KEY1=Flags
@@ -1018,6 +1032,17 @@ value_WKS1=Adresse
value_WKS2=Protokoll
value_WKS3=Dienste
value_delegated=Delegierte Zone
value_dmarcaspf=Erfordert strikt SPF alignment
value_dmarcnone=Keine Aktion
value_dmarcnop=Gleiche wie diese Domain
value_dmarcnor=Sende nicht
value_dmarcp=Regel f&#252;r E-Mails, welche SPF oder DKIM fehlschl&#228;gt
value_dmarcpct=Prozentsatz der Nachrichten, um Regel anzuwenden
value_dmarcquar=Quarant&#228;ne-E-Mail
value_dmarcreject=Weise E-Mail zur&#252;ck
value_dmarcrua=Sende aggregiertes Feedback an
value_dmarcruf=Sende forensische Informationen an
value_dmarcsp=Regeln f&#252;r Subdomains
value_notdelegated=Andere Zone
value_other=Werte (eine pro Zeile)
value_spfa=Erlaube Versand von der Domain-IP-Adresse?
@@ -1068,6 +1093,7 @@ weeks=Wochen
whois_ecannot=Sie haben nicht die Berechtigung WHOIS-Informationen abzurufen
whois_header=Ausgabe des Befehls $1 ..
whois_title=WHOIS-Informationen
xfer_count=Test&#252;bertragung mit $1 Datens&#228;tze erfolgreich aus mindestens einem Nameserver empfangen. Die tats&#228;chlichen Transfers von BIND sollten auch erfolgreich sein.
xfer_doing=Teste Transfer von Slave Zone von $1 ..
xfer_done=.. von $1 : Komplett OK
xfer_failed=.. von $1 : Fehlgeschlagen : $2
@@ -1099,7 +1125,9 @@ zonekey_alg=Schl&#252;ssel-Algorithmus
zonekey_already=Die Zone hat bereits einen DNSSEC-Schl&#252;ssel, und so ist es bereits signiert.
zonekey_ave=Durchschnittliche Gr&#246;&#223;e
zonekey_creating=Erstelle DNSSEC Schl&#252;ssel f&#252;r $1 ..
zonekey_desc=Diese Zone hat bisher keine DNSSEC-Signaturschl&#252;ssel. Sie k&#246;nnen dieses Formular verwenden, um mit Webmin welche zu erstellen, so dass die Clients diese Zone aufl&#246;sen k&#246;nnen und gegen DNS-Spoofing-Attacken gesch&#252;tzt sind.
zonekey_disable=L&#246;sche Schl&#252;ssel
zonekey_disabledesc=Entfernt die DNSSEC-Schl&#252;ssel aus dieser Zone und alle signierten Eintr&#228;gen. Sobald dies erledigt ist, werden Sie in der Lage, einen neuen Schl&#252;ssel zu generieren.
zonekey_done=.. fertig
zonekey_ds=DS Eintrag f&#252;r &#252;bergeordnete Zone :
zonekey_ecreate=.. Erzeugung fehlgeschlagen : $1

View File

@@ -294,7 +294,10 @@ edit_espfinclude='$1' is not a valid additional domain from which mail is sent
edit_espfredirect='$1' is not a valid alternate domain name
edit_espfexp='$1' is a valid record name for a rejection message
edit_ensec3value2=Missing or non-numeric number of iterations
edit_ensec3value2=Missing or non-base64 salt
edit_ensec3value3=Missing or non-base64 salt
edit_edmarcpct=Percentage of messages must be an integer between 0 and 100
edit_edmarcrua=Missing aggregate feedback address
edit_edmarcruf=Missing forensic information address
text_title=Edit Records File
text_title2=View Records File
@@ -374,6 +377,7 @@ type_HINFO=Host Information
type_NSEC3PARAM=DNSSEC Parameters
type_TXT=Text
type_SPF=Sender Permitted From
type_DMARC=DMARC
type_WKS=Well Known Service
type_RP=Responsible Person
type_PTR=Reverse Address
@@ -390,6 +394,7 @@ edit_MX=Mail Server
edit_HINFO=Host Information
edit_TXT=Text
edit_SPF=Sender Permitted From
edit_DMARC=DMARC
edit_WKS=Well Known Service
edit_RP=Responsible Person
edit_PTR=Reverse Address
@@ -407,6 +412,7 @@ recs_MX=Mail Server
recs_HINFO=Host Information
recs_TXT=Text
recs_SPF=Sender Permitted From
recs_DMARC=DMARC
recs_WKS=Well Known Service
recs_RP=Responsible Person
recs_PTR=Reverse Address
@@ -442,6 +448,7 @@ value_KEY2=Protocol
value_KEY3=Algorithm
value_KEY4=Key data
value_SPF1=SPF specification
value_DMARC1=DMARC specification
value_NSEC3PARAM1=Hash algorithm
value_NSEC3PARAM2=NSEC3 flags
value_NSEC3PARAM3=Number of hash iterations
@@ -468,6 +475,18 @@ value_spfredirect=Use SPF record from alternate domain
value_spfnoredirect=Use this domain's record
value_spfexp=TXT record for rejection reason
value_spfnoexp=None
value_dmarcnone=Take no action
value_dmarcquar=Quarantine email
value_dmarcreject=Reject email
value_dmarcp=Policy for emails that fail SPF or DKIM
value_dmarcpct=Percentage of messages to apply policy
value_dmarcrua=Send aggregate feedback to
value_dmarcruf=Send forensic information to
value_dmarcsp=Policy for sub-domains
value_dmarcnop=Same as this domain
value_dmarcaspf=Require strict SPF alignment
value_dmarcadkim=Require strict DKIM alignment
value_dmarcnor=Don't send
warn=Warn
fail=Fail
@@ -487,6 +506,8 @@ acl_zones=Domains this user can edit
acl_zall=All zones
acl_zsel=Selected zones..
acl_znsel=All except selected..
acl_inviews=Views this user can edit domains in
acl_toplevel=Outside any view
acl_master=Can create master zones?
acl_slave=Can create slave/stub zones?
acl_forward=Can create forward zones?
@@ -805,6 +826,9 @@ log_dnssec=Change DNSSEC key re-signing
convert_err=Failed to convert zone
convert_efile=A records file must be specified before a slave zone can be converted to a master.
convert_efilesize=Records file $1 does not exist or is empty
convert_ebinary=The command needed to convert from a binary slave zone to a text format master is not installed
convert_ecompile=Binary to text format conversion failed : $1
whois_title=WHOIS Information
whois_header=Output from command $1 ..
@@ -864,9 +888,9 @@ vdelete_move=Move to view
gen_title=Record Generators
gen_desc=This page allows you to define generators, each of which will create multiple records in this zone using an incrementing counter. This can be useful for delegating parts of the reverse zone to another server.
gen_range=Range
gen_name=Address pattern
gen_name=Record name pattern
gen_type=Type
gen_value=Hostname pattern
gen_value=Record value pattern
gen_cmt=Comment
gen_skip=every
gen_show=Show generated records

View File

@@ -224,6 +224,7 @@ edit_KEY=Offentlig n&#248;kkel
edit_LOC=Plassering
edit_MX=E-post tjener
edit_NS=Navnetjener
edit_NSEC3PARAM=DNSSEC Parametere
edit_PTR=Revers adresse
edit_RP=Ansvarlig person
edit_SPF=Sender tillatt fra
@@ -258,6 +259,7 @@ edit_eloc=Manglende bredde- og lengdegrad
edit_emx='$1' er ikke en gyldig e-post tjener
edit_ename='$1' er ikke et gyldig oppf&#248;ringsnavn
edit_ens='$1' er ikke en gyldig navnetjener
edit_ensec3value2=Manglende eller ikke-base64 salt
edit_eos=Manglende OS type
edit_eport='$1' er ikke et gyldig portnummer
edit_epri='$1' er ikke en gyldig prioritet
@@ -780,6 +782,7 @@ recs_KEY=Offenlig n&#248;kkel
recs_LOC=Plassering
recs_MX=E-post tjener
recs_NS=Navnetjener
recs_NSEC3PARAM=DNSSEC Parametere
recs_PTR=Revers adresse
recs_RP=Ansvarlig person
recs_SPF=Sender tillatt fra
@@ -979,6 +982,7 @@ type_KEY=Offentlig n&#248;kkel
type_LOC=Plassering
type_MX=E-post tjener
type_NS=Navnetjener
type_NSEC3PARAM=DNSSEC Parametere
type_PTR=Revers adresse
type_RP=Ansvarlig person
type_SPF=Avsender tillatt fra
@@ -1015,6 +1019,11 @@ value_LOC1=Bredde- og lengdegrad
value_MX1=Prioritet
value_MX2=E-post tjener
value_NS1=Navnetjener
value_NSEC3PARAM1=Hash algoritme
value_NSEC3PARAM2=NSEC3 flagg
value_NSEC3PARAM3=Antall hash iterasjoner
value_NSEC3PARAM4=Lengde p&#229; salt
value_NSEC3PARAM5=Salt streng
value_PTR1=Vertsnavn
value_RP1=E-post adresse
value_RP2=Tekst-oppf&#248;ring navn
@@ -1027,6 +1036,8 @@ value_TXT1=Melding
value_WKS1=Adresse
value_WKS2=Protokoll
value_WKS3=Tjenester
value_delegated=Delegert sone
value_notdelegated=Annen sone
value_other=Verdier (en per linje)
value_spfa=Tillat sending fra domenets IP adresse?
value_spfall=Handling for andre avsendere

View File

@@ -282,6 +282,15 @@ while($i < @tok) {
}
}
# If this is a DMARC record .. adjust the class
local $dmarc;
if ($dir{'type'} eq 'TXT' &&
($dmarc=&parse_dmarc(@{$dir{'values'}}))) {
if (!@{$dmarc->{'other'}}) {
$dir{'type'} = 'DMARC';
}
}
push(@rv, \%dir);
# Stop processing if this was an SOA record
@@ -396,9 +405,11 @@ splice(@$lref, $_[1]->{'line'}, 1);
# Returns a string for some zone record
sub make_record
{
local $type = $_[3] eq "SPF" && !$config{'spf_record'} ? "TXT" : $_[3];
return $_[0] . ($_[1] ? "\t$_[1]" : "") . "\t$_[2]\t$type\t$_[4]" .
($_[5] ? "\t;$_[5]" : "");
local ($name, $ttl, $cls, $type, $values, $cmt) = @_;
local $type = $type eq "SPF" && !$config{'spf_record'} ? "TXT" :
$type eq "DMARC" ? "TXT" : $type;
return $name . ($ttl ? "\t".$ttl : "") . "\t" . $cls . "\t" . $type ."\t" .
$values . ($cmt ? "\t;$cmt" : "");
}
# bump_soa_record(file, &records)
@@ -738,6 +749,7 @@ local $rvword;
while(@rv) {
my $w = shift(@rv);
if (length($rvword)+length($w)+1 >= 255) {
$rvword .= " ";
push(@rvwords, $rvword);
$rvword = "";
}
@@ -748,6 +760,57 @@ push(@rvwords, $rvword);
return join("\" \"", @rvwords);
}
# parse_dmarc(text, ...)
# If some text looks like an DMARC TXT record, return a parsed hash ref
sub parse_dmarc
{
my $txt = join(" ", @_);
if ($txt =~ /^v=dmarc1/i) {
local @w = split(/;\s*/, $txt);
local $dmarc = { };
foreach my $w (@w) {
$w = lc($w);
if ($w =~ /^(v|pct|ruf|rua|p|sp|adkim|aspf)=(\S+)$/i) {
$dmarc->{$1} = $2;
}
else {
push(@{$dmarc->{'other'}}, $w);
}
}
return $dmarc;
}
return undef;
}
# join_dmarc(&dmarc)
# Converts a DMARC record structure to a string, designed to be inserted into
# quotes in a TXT record. If it is longer than 255 bytes, it will be split
# into multiple quoted strings.
sub join_dmarc
{
local ($dmarc) = @_;
local @rv = ( "v=DMARC1" );
foreach my $s ("pct", "ruf", "rua", "p", "sp", "adkim", "aspf") {
if ($dmarc->{$s} ne '') {
push(@rv, $s."=".$dmarc->{$s});
}
}
push(@rv, @{$dmarc->{'other'}});
local @rvwords;
local $rvword;
while(@rv) {
my $w = shift(@rv);
if (length($rvword)+length($w)+1 >= 255) {
push(@rvwords, $rvword);
$rvword = "";
}
$rvword .= "; " if ($rvword);
$rvword .= $w;
}
push(@rvwords, $rvword);
return join("\" \"", @rvwords);
}
# join_record_values(&record)
# Given the values for a record, joins them into a space-separated string
# with quoting if needed

View File

@@ -42,7 +42,8 @@ if ($in{'show'}) {
$rhs = $gv[3];
$rhs =~ s/\$\$/\0/g;
$rhs =~ s/\$/$i/g;
#$rhs =~ s/\$/$i/g;
$rhs =~ s/(\$(\{[^\}]*\})?)/&expand_mods($i,$2)/ge;
$rhs =~ s/\0/\$/g;
$rhsfull = &check_ipaddress($rhs) ? $rhs :
$rhs =~ /\.$/ ? $rhs :
@@ -78,11 +79,11 @@ for($i=0; defined($in{"type_$i"}); $i++) {
if ($in{"skip_$i"}) {
$gv[$#gv] .= "/".$in{"skip_$i"};
}
$in{"name_$i"} =~ /^[A-Za-z0-9\.\-$uscore$star\$]+$/ ||
$in{"name_$i"} =~ /^[A-Za-z0-9\.\-$uscore$star\$\{\},]+$/ ||
&error(&text('gen_ename', $i+1));
push(@gv, $in{"name_$i"});
push(@gv, $in{"type_$i"});
$in{"value_$i"} =~ /^[A-Za-z0-9\.\-$uscore$star\$]+$/ ||
$in{"value_$i"} =~ /^[A-Za-z0-9\.\-$uscore$star\$\{\},]+$/ ||
&error(&text('gen_evalue', $i+1));
push(@gv, $in{"value_$i"});
push(@gv, $in{"cmt_$i"}) if ($in{"cmt_$i"});
@@ -108,3 +109,26 @@ for($i=0; defined($in{"type_$i"}); $i++) {
&sign_dnssec_zone_if_key($zone, \@recs);
&redirect("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}");
sub expand_mods
{
my ($i, $m) = @_;
$m =~ s/^\{//;
$m =~ s/\}$//;
my ($o, $w, $b) = split(/,/, $m);
if ($o !~ /^\-?\d+$/) {
# Disallowed offset
$o = 0;
}
if ($w !~ /^\d+$/) {
# Disallowed width
$w = 0;
}
if ($b !~ /^[doxXnN]$/) {
# Disallowed modifier
$b = undef;
}
$b ||= "d";
$i += $o;
$i = sprintf("%".($w ? "0".$w : "").$b, $i);
return $i;
}

View File

@@ -339,6 +339,49 @@ else {
}
$vals = "\"".&join_spf($spf)."\"";
}
elsif ($in{'type'} eq 'DMARC') {
# Build DMARC record from inputs
$dmarc = $r ? &parse_dmarc(@{$r->{'values'}}) : { };
$dmarc->{'p'} = $in{'dmarcp'};
$in{'dmarcpct'} =~ /^\d+$/ && $in{'dmarcpct'} >= 0 &&
$in{'dmarcpct'} <= 100 || &error($text{'edit_edmarcpct'});
$dmarc->{'pct'} = $in{'dmarcpct'};
if ($in{'dmarcsp'}) {
$dmarc->{'sp'} = $in{'dmarcsp'};
}
else {
delete($dmarc->{'sp'});
}
$dmarc->{'aspf'} = $in{'dmarcaspf'} ? 's' : 'r';
$dmarc->{'adkim'} = $in{'dmarcadkim'} ? 's' : 'r';
if ($in{'dmarcrua_def'}) {
delete($dmarc->{'rua'});
}
else {
$in{'dmarcrua'} =~ /^\S+$/ ||
&error($text{'edit_edmarcrua'});
$in{'dmarcrua'} = 'mailto:'.$in{'dmarcrua'}
if ($in{'dmarcrua'} !~ /^[a-z]+:/i);
$dmarc->{'rua'} = $in{'dmarcrua'};
}
if ($in{'dmarcruf_def'}) {
delete($dmarc->{'ruf'});
}
else {
$in{'dmarcruf'} =~ /^\S+$/ ||
&error($text{'edit_edmarcruf'});
$in{'dmarcruf'} = 'mailto:'.$in{'dmarcruf'}
if ($in{'dmarcruf'} !~ /^[a-z]+:/i);
$dmarc->{'ruf'} = $in{'dmarcruf'};
}
$vals = "\"".&join_dmarc($dmarc)."\"";
}
elsif ($in{'type'} eq 'NSEC3PARAM') {
# Save DNSSEC parameters
$in{'value2'} =~ /^\d+$/ ||

View File

@@ -20,6 +20,23 @@ $access{'ro'} && &error($text{'view_ecannot'});
&save_address("allow-query", $view, 1);
&save_address("also-notify", $view, 1);
&save_address("allow-notify", $view, 1);
if ($in{'transfer-source'})
{
&check_ipaddress($in{'transfer-source'}) || &error(&text('net_eaddr', $in{'transfer-source'}));
push(@tvals, $in{'transfer-source'});
if (@tvals)
{
&save_directive($view, 'transfer-source',
[ { 'name' => 'transfer-source',
'values' => \@tvals } ], 1);
}
}
else
{
&save_directive($view, 'transfer-source', [], 1);
}
&flush_file_lines();
&unlock_file(&make_chroot($view->{'file'}));
&webmin_log("view", undef, $view->{'value'}, \%in);

10
cfengine/config.info.no Normal file
View File

@@ -0,0 +1,10 @@
line2=System konfigurasjon,11
cfengine_dir=Sti til katalog med konfigurasjonsfiler,0
cfengine=Sti ti lcfenging program,0
cfengine_conf=Sti til cfengine.conf fil,3,Automatisk
cfrun=Sti til cfrun program,0
cfrun_hosts=Sti til fil med tjenerinnstillinger,3,Automatisk
cfd=Sti til cdf program,0
cfd_conf=Sti til cfd.conf fil,3,Automatisk
start_cmd=Kommando for &#229; starte cfd,3,Bare kj&#248;r programmet
stop_cmd=Kommando for &#229; stoppe cfd,3,Bare stopp prosessen

View File

@@ -28,6 +28,7 @@ edit_cmdowner=Ausf&#252;hren als Benutzer
edit_cmdtimeout=Timeout
edit_controlall=Alle Adressen
edit_controlallow=Erlaube Verbindungen von
edit_controlauto=Befehl, um nach Zeitplan auszuf&#252;hren
edit_controldef=Globale Definitionen
edit_controldeny=Verbiete Verbindungen von
edit_controldom=Dom&#228;nenname
@@ -81,6 +82,7 @@ edit_files_create=Erstelle Datei
edit_files_fixall=Behebe alle Dateien
edit_files_fixdirs=Behebe Verzeichnisse
edit_files_fixplain=Behebe normale Dateien
edit_files_linkchildren=Verlinke Kinder
edit_files_touch=Erstelle Dateien
edit_files_warnall=Warnungen &#252;ber alle Dateien
edit_files_warndirs=Warne &#252;ber Verzeichnisse
@@ -98,6 +100,7 @@ edit_filesowner=Setze Besitzer auf
edit_filesrec=Rekursionstiefe
edit_grant=$edit_admit
edit_grantdir=Verzeichnis
edit_granthosts=Hosts und Host-Muster
edit_groupmems=Mitglieder
edit_groupname=Gruppenname
edit_groups=Gruppendefinitionen
@@ -140,6 +143,7 @@ edit_tidyage=Altersbeschr&#228;nkung
edit_tidyage0=$1 ist mehr als $2 Tage
edit_tidyage1=Jedes Alter
edit_tidyatime=Zugriffszeit
edit_tidyctime=Inhalt Zeit
edit_tidydir=Verzeichnis zum s&#228;ubern
edit_tidymtime=&#196;nderungszeit
edit_tidynew=F&#252;ge ein Verzeichnis zum s&#228;ubern hinzu

387
cfengine/lang/no Normal file
View File

@@ -0,0 +1,387 @@
add_ecfengine=CFengine er ikke installert p&#229; tjener $1
add_echeck=Tjener $1 har ikke konfigurasjonsmotor modulen
add_err=Kunne ikke legge til tjener
add_eversion=CFengine p&#229; tjener $1 er versjon $2, men denne Webmin modulen st&#248;tter bare versjonene $3 .
add_gerr=Kunne ikke legge til grupppe
add_gmsg=Legger til tjenere i gruppe $1 ..
add_msg=Legger til $1 ..
add_ok=Lagt til tjener $1 ($2 $3)
add_title=Legg til tjenere
cfd_ecmd=Daemonkommandoen $1 for Konfigurasjonsmotoren ble ikke funnet p&#229; systemet ditt. Kanskje den ikke er installert, eller s&#229; er <a href='$2'>modulkonfigurasjonen</a> feil.
cfd_none=Det er ikke opprettet noen innstillinger for Konfigurasjonsmotoren enda.
cfd_return=daemon innstillinger
cfd_start=Start Konfigurasjonsmotor Daemonen
cfd_startdesc=Klikk p&#229; denne knappen for &#229; starte Configuration Engine daemonen med innstillingene ovenfor. Dette vil tillate andre verter &#229; kj&#248;re konfigurasjonen p&#229; denne tjeneren, og start tidsplanlagt kj&#248;ring av konfigurasjonen (hvis dette er aktivert).
cfd_stop=Stop Konfigurasjonsmotor Daemon
cfd_stopdesc=Klikk p&#229; denne knappen for &#229; stoppe Konfigurasjonsmotor daemonen. Dette vil forhindre andre verter fra &#229; kj&#248;re konfigurasjonen p&#229; denne tjeneren, og stopp den planlagte kj&#248;ringen av konfigurasjonen.
cfd_title=Konfigurasjonsmotor Daemon
cluster_failed=Kunne ikke kj&#248;re CFengine p&#229; $1 : $2
cluster_header=Kj&#248;rer konfigurasjonsmotor p&#229; alle verter i klyngen ..
cluster_success=Output fra CFengine p&#229; $1 ..
cluster_title=Kj&#248;r Konfigurasjonsmotor
edit_actionadd=Legg til valgt handling
edit_actionseq=Handlinger som skal kj&#248;res i rekkef&#248;lge
edit_admit=Gi tilgang til kataloger
edit_all=Enhver klasse
edit_class=Bruk p&#229; klasse
edit_cmd=Skall-kommando som skal kj&#248;res
edit_cmdgroup=Kj&#248;r som gruppe
edit_cmdowner=Kj&#248;r som bruker
edit_cmdtimeout=Tidsavbrudd
edit_controlall=Alle adresser
edit_controlallow=Tillat tilkoblinger fra
edit_controlauto=Kommando som skal kj&#248;res i hht. tidsplan
edit_controldef=Global definisjon
edit_controldeny=Nekt tilkoblinger fra
edit_controldom=Domenenavn
edit_controlelapsed=Minimum minutter mellom kj&#248;ringer
edit_controlinterval=Minutter mellom tidsplanlagte kj&#248;ringer
edit_controllog=Loggf&#248;r alle tilkoblinger?
edit_controlmax=Maksimum samtidige kj&#248;ringer
edit_controlnone=Ingen adresser
edit_controlrun=Kommando som skal kj&#248;res p&#229; foresp&#248;rsel
edit_controlskip=Hopp over revers IP adresse oppslag for
edit_controlvalue=Verdier
edit_copy_fix=Kopier filer
edit_copy_silent=Kopier stille
edit_copy_warn=Vis advarsel
edit_copyact=Kopier handlingsmodus
edit_copybackup=Sikkerhetskopier overskrevne filer?
edit_copydest=Kopier til m&#229;l
edit_copydir=Kilde-fil eller -katalog
edit_copyforce=Kopier selv hvis oppdatert?
edit_copynew=Legg til valg for andre kopieringskilder
edit_copypurge=Slett filer som ikke lenger finnes i kilden?
edit_copyserver=Kopier fra tjener
edit_copysize=St&#248;rrelses-begrensing
edit_copysize1=Er lik
edit_copysize2=Mindre enn
edit_copysize3=St&#248;rre enn
edit_create1=Legg til handling og klasse
edit_create2=Legg til innstillinger for klasse
edit_deny=Nekt tilgang til kataloger
edit_dir=Katalog som skal opprettes
edit_dirgroup=Gruppe
edit_dirmode=Tillatelser
edit_dirowner=Eier
edit_dis_all=Enhver type
edit_dis_file=Ikke-spesial fil
edit_dis_link=Symlink
edit_dis_plain=Fil
edit_disfile=Fil som skal deaktiveres
edit_disnew=Legg til ny fil &#229; deaktivere
edit_disrot=Handling ved deaktivering
edit_disrot0=Omd&#248;p med <tt>.cfdisabled</tt> tilf&#248;yd
edit_disrot1=Trunker fil
edit_disrot2=Roter $1 ganger
edit_dissize=Deaktiver bare dersom st&#248;rrelsen er
edit_distype=Deaktiver bare dersom filtypen er
edit_editfile=Fil som skal redigeres
edit_editnew=Legg til ny fil som skal redigeres
edit_editscript=Redigerer script
edit_files_alert=Vis filnavn
edit_files_compress=Komprimer filer
edit_files_create=Opprett fil
edit_files_fixall=Fiks alle filer
edit_files_fixdirs=Fiks kataloger
edit_files_fixplain=Fiks normale filer
edit_files_linkchildren=Lenk underordnede
edit_files_touch=R&#248;r filer
edit_files_warnall=Advar om alle filer
edit_files_warndirs=Advar om kataloger
edit_files_warnplain=Advar om normale filer
edit_filesacl=Sett ACL til
edit_filesact=Handling som skal utf&#248;res
edit_filesall=Alle filer
edit_filesdir=Sjekk filer i katalog
edit_filesexclude=Ikke sjekk filer som matcher
edit_filesgroup=Set gruppe til
edit_filesinclude=Bare sjekk filer som matcher
edit_filesinf=Uendelig
edit_filesmode=Sett tillatelser til
edit_filesnew=Legg til innstillinger for en annen katalog.
edit_filesnone=Ingen filer
edit_filesowner=Sett eier til
edit_filesrec=Rekursjons-niv&#229;
edit_grant=$edit_admit
edit_grantdir=Katalog
edit_granthosts=Verter og verts-m&#248;nstre
edit_groupmems=Medlemmer
edit_groupname=Gruppe navn
edit_groups=Gruppe definisjoner
edit_header=Klasse detaljer
edit_ignore=Filnavn som skal ignoreres
edit_linkfrom=Lenke fra
edit_linkover=Overskriv?
edit_links=Symbolske lenker som skal opprettes
edit_linkto=Lenke til
edit_linktype=Alle filer?
edit_local=Denne verten
edit_manual=Rediger manuelt
edit_manualtext=Ny konfigurasjonsfil tekst
edit_manualtext2=Konfigurasjonsfil linjer $1 til $2 av $3
edit_miscdest=Monter katalog
edit_miscmode=Innstillinger for montering
edit_miscsrc=NFS tjener og sti
edit_nochange=Ikke endre
edit_none=Ingen
edit_proc=Finn prosesser som matcher
edit_proc_bymatch=Send signal til advarsel prosesser
edit_proc_signal=Send signal til matchende prosesser
edit_proc_warn=Bare vis matcher
edit_procact=Signal handlingsmodus
edit_procgroup=Kj&#248;r kommando som gruppe
edit_procmat=Advar dersom antall prosesser ikke er
edit_procmat0=Advar aldri
edit_procmat1=Eksakt
edit_procmat2=Mindre enn
edit_procmat3=Mer enn
edit_procnew=Legg til nytt prosess-m&#248;nster som skal matches
edit_procowner=Kj&#248;r kommando som bruker
edit_procrestart=Kommando som skal kj&#248;res etter stopp
edit_procsig=Send signal til prosesser
edit_reqfree=Minimum ledig plass
edit_reqfs=Filsystem som skal sjekkes
edit_resns=DNS tjenere
edit_resother=Andre <tt>resolv.conf</tt> linjer
edit_route=Standard gateway
edit_section=Handlingstype
edit_tidyage=Aldersbegrensing
edit_tidyage0=$1 er mer enn $2 dager
edit_tidyage1=Enhver alder
edit_tidyatime=Tilgangs tid
edit_tidyctime=Innholds tid
edit_tidydir=Katalog som skal ryddes
edit_tidymtime=Endrings tid
edit_tidynew=Legg til ny katalog som skal ryddes
edit_tidypat=Slett filer som matcher
edit_tidysize=St&#248;rrelsesbegrensing
edit_tidysize0=Enhver filst&#248;rrelse
edit_tidysize1=Tomme filer
edit_tidysize2=Filer st&#248;rre enn
edit_title=Rediger innstillinger for klasse
host_cfg=Gjeldende CFengine konfigurasjon fra $1
host_delete=Fjern fra administrert liste
host_header=Detaljer for administrert CFengine tjener
host_name=Vertsnavn
host_os=OS fra Webmin
host_title=Administrert tjener
host_type=Tjener type
host_ver=CFEngine versjon
hosts_add=Legg til tjener
hosts_copy=Kopier og kj&#248;r konfigurasjon
hosts_copydesc=Klikk p&#229; denne knappen for &#229; kopiere CFengine konfigurasjonen fra denne tjeneren til alle tjenere ovenfor, og umiddelbart ta denne i bruk,
hosts_gadd=Legg til tjenere i gruppe
hosts_hosts=Tjenere i klynge
hosts_nohosts=Ingen Webmin tjenere som kj&#248;rer CFengine er definert enda.
hosts_opts=Innstillinger for kj&#248;rende konfigurasjoner
hosts_return=tjener liste
hosts_run=Kj&#248;r Configuration Engine
hosts_rundesc=Klikk p&#229; denne knappen for &#229; kj&#248;re Konfigurasjonsmotor p&#229; alle tjenere angitt ovenfor, og bruke gjeldende konfigurasjoner.
hosts_title=Webmin CFengine Klynge
index_active=Aktiv?
index_add=Legg til handling av type:
index_admit=Tillat katalog $1
index_admit2=Tillat $1 kataloger
index_cadd=Legg til klasse..
index_cfrun=Kj&#248;r kommando $1
index_classes=Bruk p&#229; klasser
index_control=Kj&#248;r handling $1
index_control2=Kj&#248;r $1 handlinger
index_copy=Kopier $1 til $2
index_copy2=Kopier $1 kataloger
index_deny=Nekt katalog $1
index_deny2=Nekt $1 kataloger
index_details=Handlingsoversikt for klassene
index_directories=Opprett katalog $1
index_directories2=Opprett $1 kataloger
index_disable=Deaktiver fil $1
index_disable2=Deaktiver $1 filer
index_disks=$index_required
index_disks2=$index_required2
index_ecommand=Konfigurasjonsmotor kommandoen $1 ble ikke funnet p&#229; systemet ditt. Kanskje den ikke er installert, eller s&#229; er <a href='$2'>modulkonfigurasjonen</a> feil.
index_econfig=Konfigurasjonsmotor konfig.filen $1 ble ikke funnet p&#229; systemet ditt. Kanskje den ikke er installert, eller s&#229; er <a href='$2'>modulkonfigurasjonen</a> feil.
index_editfiles=Rediger fil $1
index_editfiles2=Rediger $1 filer
index_eversion=Kunne ikke hente versjon fra Konfigurasjonsmotor kommandoen $1. Faktisk output fra kommandoen var : $2
index_eversion2=Konfigurasjonsmotor kommandoen $1 p&#229; systemet ditt er versjon $2, men denne Webmin modulen st&#248;tter bare versjonene $3.
index_files=Sett tillatelser p&#229; $1
index_files2=Sett tillatelser p&#229; $1 kataloger
index_grant=$index_admit
index_grant2=$index_admit2
index_groups=Definer grupper $1
index_ignore=Ignorer $1 stier
index_links=Lenk $1 til $2
index_links2=Opprett $1 lenker
index_maybe=Kanskje
index_misc=Monter $1
index_misc2=Monter $1 NFS filsystemer
index_none=Ingen konfigurasjonshandlinger er for &#248;yeblikket definert.
index_procs=Finn prosesser som matcher $1
index_procs2=Finn $1 prosess matcher
index_required=Sjekk filsystem $1
index_required2=Sjekk $1 filsystemer
index_return=liste med handlinger
index_route=Sett gateway til $1
index_run=Kj&#248;r Konfigurasjonsmotor
index_rundesc=Klikk p&#229; denne knappen for &#229; kj&#248;re kommandoen $1 p&#229; denne verten. Alle handlinger listet ovenfor vil bli utf&#248;rt umiddelbart, der det er n&#248;dvendig.
index_section=Handlingstype
index_shellcommands=Kj&#248;r kommando $1
index_shellcommands2=Kj&#248;r $1 kommandoer
index_tidy=Slett filer i $1
index_tidy2=Slett filer i $1 kataloger
index_title=Konfigurasjonsmotor
index_version=CFengine versjon $1
log_create_class=La til klasse til handling $1
log_create_section=Opprettet handling $1 og klasse
log_delete_class=Fjernet klasse fra handling $1
log_delete_section=Slettet seksjon $1
log_modify_class=Endret klasse i handling $1
log_prun=Kj&#248;rte vertskonfigurasjoner
log_push=Endret eksterne konfigurasjonsverter
log_run=Kj&#248;rte konfigurasjonsmotor
log_start=Startet daemon
log_stop=Stoppet daemon
push_domain=Domenenavn
push_ecmd=Konfigurasjonsmotor kommandoen $1 for ekstern eksekvering ble ikke funnet p&#229; systemet ditt. Kanskje den ikke er installert, eller s&#229; er <a href='$2'>modulkonfigurasjonen</a> feil.
push_edomain=Manglende eller ugyldig domenenavn
push_ehost='$' er ikke et gyldig vertsnavn
push_err=Kunne ikke lagre tjenerinnstillinger
push_ethis='$1' er denne verten!
push_exec=Kj&#248;rer vertskonfigurasjoner med kommandoen $1 ..
push_header=Konfigurasjonstjener distribusjonsinnstillinger
push_host=Klient vertsnavn
push_opts=CFengine innstillinger for klient
push_push=Kj&#248;r vertskonfigurasjoner
push_pushdesc=Klikk p&#229; denne knappen for &#229; kj&#248;re Konfigurasjonsmotor p&#229; hver av vertene angitt ovenfor, ved hjelp av kommandoen $1. Den lokale konfigurasjonen fra hver vert vil bli brukt for behandlingen, med mindre du har satt opp at master konfigurasjonen skal distribueres til hver vert.
push_return=eksterne konfigurasjonsverter
push_title=Eksterne konfigurasjonsverter
push_title2=Kj&#248;r vertskonfigurasjoner
push_users=Brukere som kan kj&#248;re <tt>cfrun</tt>
run_desc=Denne siden kan brukes til &#229; kj&#248;re Konfigurasjonsmotor p&#229; denne verten. N&#229;r den kj&#248;res vil handlingene du har konfigurert bli utf&#248;rt der det er n&#248;dvendig.
run_dry=Vis bare det som ville blitt gjort?
run_exec=Kj&#248;rer kommando $1 ..
run_header=Innstillinger for &#229; kj&#248;re CFengine p&#229; denne verten
run_nocmd=Kan utf&#248;re skall kommandoer?
run_noifc=Kan endre nettverksgrensesnitt?
run_nolinks=Kan opprette symbolske lenker?
run_nomnt=Kan montere filsystemer?
run_notidy=Kan rydde opp kataloger?
run_ok=Kj&#248;r n&#229;
run_title=Kj&#248;r Konfigurasjonsmotor
run_verbose=Vis detaljert output?
save_eclass=Manglende eller ugyldig klassenavn
save_ecmd=Mangler skall-kommando $1
save_ecmdgroup=Ugyldig gruppe for skall-kommando $1
save_ecmdowner=Ugyldig eier for skall-kommando $1
save_ecmdtimeout=Ugyldig tidsavbrudd for skall kommando $1
save_econtrolallow=Ingen adresser &#229; tillate angitt
save_econtrolauto=Kommando som skal kj&#248;res automatisk '$1' finnes ikke
save_econtroldef=Ugyldig navn for global definisjon $1
save_econtroldeny=Ingen adresser &#229; nekte angitt
save_econtroldomain=Ugyldig domenenavn
save_econtrolelapsed=Ugyldig minimum minutter mellom kj&#248;ringer
save_econtrolinterval=Ugyldig antall minutter mellom tidsplanlagte kj&#248;ringer
save_econtrolrun=Kommando &#229; kj&#248;re '$1' finnes ikke
save_econtrolskip=Ingen adresser &#229; hoppe over omvendt oppslag for angitt
save_ecopydest=Mangler m&#229;l for kopiering av $1
save_ecopydir=Manglende kildefil eller -katalog $1
save_ecopygroup=Manglende eller ugyldig gruppe for kopi av $1
save_ecopymode=Manglende eller ugyldige tillatelser for kopi av $1
save_ecopyowner=Manglende eller ugyldig eier for kopiering av $1
save_ecopyrec=Manglende eller ugyldig heltalls rekursjonsniv&#229; for kopi av $1
save_ecopyserver=Manglende eller ugyldig tjener for kopi av $1
save_ecopysize=Manglende eller ugyldig st&#248;rrelse for kopi av $1
save_edir=Ugyldig katalog $1
save_edirgroup=Ugyldig gruppe for katalog $1
save_edirmode=Ugyldig oktal modus for katalog $1
save_edirowner=Ugyldig eier for katalog $1
save_edisfile=Manglende deaktivert filnavn $1
save_edisrot=Manglende eller ugyldig antall rotasjoner for fil $1
save_edissize=Manglende eller ugyldig st&#248;rrelse for fil $1
save_eeditfile=Manglende fil &#229; redigere $1
save_eeditscript=Manglende editor script for fil $1
save_efilesacl=Manglende eller ugyldig ACL navn for filer i katalogen $1
save_efilesdir=Manglende katalog $1
save_efilesexclude=Manglende eller ugyldig m&#248;nster for filer som ikke skal sjekkes i katalogen $1
save_efilesgroup=Manglende eller ugyldig gruppe for filer i katalogen $1
save_efilesinclude=Manglende eller ugyldig m&#248;nster for filer som skal sjekkes i katalogen $1
save_efilesmode=Manglende eller ugyldige tillatelser for kopi av $1
save_efilesowner=Manglende eller ugyldig eier for kopi av $1
save_efilesrec=Manglende eller ugyldig heltalls rekursjonsniv&#229; for filer i katalogen $1
save_egrantdir=Ugyldig sti for katalog $1
save_egranthost='$1' er ikke gyldig vert eller vertsm&#248;nster
save_egranthosts=Ingen verter angitt for katalog $1
save_egroupname=Ugyldig navn for gruppen $1
save_elinkfrom=Manglende eller ugyldig fra for symlink $1
save_elinkto=Manglende eller ugyldig til for symlink $1
save_emiscdest=Manglende eller ugyldig monteringskatalog for $1
save_emiscmode=Ugyldige monteringsinnstillinger for $1
save_emiscsrc=Manglende eller ugyldig NFS tjener og sti $1
save_eproc=Manglende m&#248;nster for prosess match $1
save_eprocgroup=Manglende eller ugyldig gruppe for prosesser som matcher $1
save_eprocmat=Manglende eller ugyldig antall prosesser som matcher $1
save_eprocowner=Manglende eller ugyldig bruker for prosesser som matcher $1
save_eprocrestart=Manglende omstart kommando for prosesser som matcher $1
save_ereq=Ugyldig filsystem &#229; sjekke $1
save_ereqfree=Manglende eller ugyldig minimum ledig plass for $1
save_eroute=Manglende eller ugyldig standard gateway
save_err=Kunne ikke lagre klasse
save_etidy=Manglende eller ugyldig katalog &#229; rydde $1
save_etidyage=Manglende eller ugyldig antall dager for katalog $1
save_etidypat=Manglende eller ugyldig film&#248;nster for katalog $1
save_etidyrec=Manglende elelr ugyldig heltalls rekursjonsniv&#229; for katalog $1
save_etidysize=Manglende eller ugyldig filst&#248;rrelse for katalog $1
section_admit=Tillatte kataloger
section_binservers=Tjenere for bin&#230;re filer
section_broadcast=Sett broadcast adresse
section_classes=$section_groups
section_control_0=Master kontroll
section_control_1=Innstillinger for konfigurasjons daemon
section_copy=Kopier filer
section_defaultroute=Sett standard rute
section_deny=Nektede kataloger
section_directories=Opprett kataloger
section_disable=Deaktiver filer
section_disks=$section_required
section_editfiles=Rediger filer
section_files=Sett fil-tillatelser
section_grant=$section_admit
section_groups=Definer grupper
section_homeservers=Tjenere for hjemmekataloger
section_ignore=Filer som skal ignoreres
section_links=Opprett symbolske lenker
section_mailserver=E-post tjenere
section_miscmounts=Monter andre NFS filsystemer
section_mountables=Monterbare filsystemer
section_processes=Administrer prosesser
section_required=Sjekk filsystemer
section_resolve=Sett opp DNS oppslag
section_shellcommands=Kj&#248;r skall kommandoer
section_tidy=Rydd opp i kataloger
start_err=Kunne ikke starte Konfigurasjonsmotor daemon
stop_ekill=Kunne ikke stoppe prosessen : $1
stop_epids=Kj&#248;rer ikke lenger
stop_err=Kunne ikke stoppe Konfigurasjonsmotor daemon
this_server=denne tjeneren
type_admit=Konfigurasjonsmotor daemonen vil bare gi tilgang til katalogene angitt nedenfor til vertene som er angitt ved siden av hver katalog. Verter kan angis som IP adresser eller vertsm&#248;nstre (som <tt>*.domene.no</tt>).
type_classes=$type_group
type_control_0=Feltet nedenfor angir handlinger som utf&#248;res n&#229;r konfigurasjonsmotoren kj&#248;rer, i den rekkef&#248;lgen de utf&#248;res. Handlinger som ikke vises her vil ikke bli kj&#248;rt, selv om de er angitt p&#229; hovedsiden.
type_control_1=Innstillingene nedenfor kontrollerer den globale oppf&#248;rselsen til bakgrunnsprosessen som mottar foresp&#248;rsler om &#229; utf&#248;re konfigurasjonen p&#229; denne verten, n&#229;r dette foresp&#248;rres av en ekstern vert, eller i henhold til en fast tidsplan.
type_copy=Hver av filene eller katalogene (og deres innhold) angitt nedenfor vil bli kopiert til den valgt m&#229;lkatalogen/-disken, n&#229;r n&#248;dvendig. Du kan ogs&#229; velge &#229; kopiere fra en ekstern vert, s&#229; lenge den verten kj&#248;rer konfigurasjonsmotor daemonen og tillater denne verten &#229; kopiere filer.
type_defaultroute=N&#229;r denne handlingen kj&#248;res vil konfigurasjonsmotoren sjekk gjeldende standard rute mot gateway angitt nedenfor.
type_deny=Vertene som er angitt ved siden av katalogene nedenfor vil bli nektet tilgang til de korresponderende katalogene, selv om de er angitt i en 'Tillatte kataloger' handling. Verter kan angis med IP adresse, vertsnavn eller vertsm&#248;nster (som <tt>*.domene,no</tt>).
type_directories=Katalogene angitt nedenfor vil bli opprettet med angitt eierskap og tillatelser dersom de ikke finnes. Feltene for eier, gruppe og tillatelser er valgfrie.
type_disable=Katalogene angitt nedenfor vil bli sjekke for &#229; se om de finnes og er i overenstemmelse med valgte st&#248;rrelses- og type-kriterier, og i s&#229; fall bli deaktivert enten ved omd&#248;ping aller avkorting.
type_disks=$type_required
type_editfiles=Tekstomr&#229;det nedenfor kan brukes for &#229; legge inn et script som redigerer valgt fil ved &#229; legge til, slette eller oppdatere linjer der det er n&#248;dvendig. Sjekk CFengines dokumentasjon for &#229; se syntaksen for dette script-spr&#229;ket.
type_grant=$type_admit
type_groups=Bruk tabellen nedenfor til &#229; definere ekstra grupper av verter som brukes andre steder i konfigurasjonen som klassenavn. Grupper kan ogs&#229; inneholde skall-kommandoer i sp&#248;rringer som utf&#248;res for &#229; bestemme om gruppen evaluerer til sann eller usann.
type_ignore=Alle filer og kataloger angitt nedenfor vil bli ignorert av alle 'Kopier filer', 'Sett tillatelser', og 'Rydd kataloger' handlinger. Hver oppf&#248;ring kan v&#230;re en full sti, en skall-stil regul&#230;rt uttrykk eller et filnavn.
type_links=De symbolske lenkene angitt nedenfor vil bli opprettet dersom de ikke finnes. Dersom en lenke finnes allerede, men peker til et annet m&#229;l, vil den vanligvis ikke bli endret.
type_miscmounts=NFS filsystem monteringer angitt nedenfor vil bli sjekket og montert hvis n&#248;dvendig n&#229;r CFengine kj&#248;res. NFS tjener og sti feltet m&#229; angis p&#229; standard format (<tt>tjenernavn:/sti/navn</tt>). Monteringsinnstillinger m&#229; v&#230;re p&#229; samme format som brukes i <tt>/etc/fstab</tt> filen, og er valgfrie.
type_processes=Bruk feltet nedenfor til &#229; s&#248;ke etter prosesser som matcher angitt m&#248;nster, og eventuelt sende dem et signal for &#229; stoppe dem. N&#229;r en prosess stoppes kan du ogs&#229; angi en kommando som skal kj&#248;res for &#229; starte prosessen p&#229; nytt.
type_required=Filsystemene angitt nedenfor vil bli sjekket n&#229;r denne handlingen kj&#248;res for &#229; verifisere at de er montert, og hvis ikke vil det bli vist en advarsel. Hvert filsystem vil ogs&#229; bli sjekket for &#229; se om ledig diskplass er under et eventuelt angitt minimum.
type_resolve=DNS tjeners IP adresse som du angir nedenfor vil bli brukt til &#229; oppdatere <tt>/etc/resolv.conf</tt> n&#229;r denne handlingen kj&#248;res.
type_shellcommands=Kommandoene angitt nedenfor vil bli utf&#248;rt hver gang konfigurasjonsmotoren kj&#248;res. Feltene for bruker og gruppe er valgfrie - dersom ingenting er angitt i disse vil kommandoen kj&#248;res som root. Feltet for tidsavbrudd er ogs&#229; valgfritt - dersom det ikke er angitt noe tidsavbrudd vil CFengine vente helt til kommandoen er fullf&#248;rt.
type_tidy=Katalogene angitt nedenfor vil bli scannet for filer som matcher valgte navne-, alders- og tidspunkt-kriterier hver gang CFengine kj&#248;res. Alle filer som finnes vil bli slettet, uten at noen sikkerhetskopi tas.

View File

@@ -4,7 +4,6 @@ category=cluster
desc_ca=Motor de Configuració
desc_es=Motor de Configuración
desc_de=Konfigurations-Automat
longdesc=Configure the CFengine program, for checking and maintaining various system-administration settings.
desc_fr=Moteur de configuration
os_support=!windows
desc_sv=Konfigurations Motor
@@ -12,5 +11,5 @@ desc_cz=Konfigura
desc_nl=Configuratie Engine
desc_cz.UTF-8=KonfiguraÄ<61>­ stroj
desc_pl=Konfiguracja silnika
longdesc_ms_MY=Konfigurasi program CFengine, untuk memeriksa dan mengekalkan tetapan sistem pentadbiran pelbagai
desc_ms_MY=Enjin Konfigurasi
desc_no=Konfigurasjonsmotor

View File

@@ -28,8 +28,8 @@ if ($access{'lang'}) {
my ($linfo) = grep { $_->{'lang'} eq $glang } @langs;
print &ui_table_row($text{'index_lang'},
&ui_radio("lang_def", $user->{'lang'} ? 0 : 1,
[ [ 1, &text('index_langglobal',
$linfo->{'desc'})."<br>" ],
[ [ 1, &text('index_langglobal2', $linfo->{'desc'},
$linfo->{'lang'})."<br>" ],
[ 0, $text{'index_langset'} ] ])." ".
&ui_select("lang", $user->{'lang'},
[ map { [ $_->{'lang'},
@@ -48,7 +48,7 @@ if ($access{'theme'}) {
else {
$tname = $text{'index_themedef'};
}
my @all = &webmin::list_themes();
my @all = &webmin::list_visible_themes($user->{'theme'});
my @themes = grep { !$_->{'overlay'} } @all;
my @overlays = grep { $_->{'overlay'} } @all;

View File

@@ -1,6 +1,6 @@
index_title=Canvi d'Idioma i Tema
index_lang=Idioma de la interfície d'usuari de Webmin
index_langglobal=Idioma global ($1)
index_langglobal=Idioma global ... $1 ($2)
index_langset=Tria personal...
index_theme=Tema de la interfície d'usuari de Webmin
index_overlay=Capa del tema

View File

@@ -1,36 +1,36 @@
__norefs=1
acl_lang=Darf Sprache &#228;ndern?
acl_pass=Darf das Passwort &#228;ndern, wenn das in Webmin so eingestellt ist?
acl_theme=Darf Design &#228;ndern?
change_done=.. erledigt
change_ecolon=Ihr Passwort darf das Zeichen <tt> : </tt> nicht enthalten!
change_eoverlay=Sie k&#246;nnen kein ein Thema Overlay ausw&#228;hlen, sofern ein UI theme gew&#228;hlt wurde
change_eoverlay2=Das ausgew&#228;hlte Thema Overlay ist nicht kompatibel mit dem gew&#228;hlten UI Thema
change_epass=Neues Passwort ist ung&#252;ltig : $1
index_overlaydef=Keine - benutze Design Standards
index_themeglobal=Globales Design ($1)
index_langset=Pers&#246;nliche Auswahl ..
change_epass2=Neue Passw&#246;rter stimmen nicht &#252;berein
change_redirect=Leite zum Hauptmen&#252; zur&#252;ck ..
change_restart=Starte Webmin neu ..
change_title=&#196;ndere die Einstellungen
change_user=Modifiziere das Passwort des Webmin-Benutzers ..
index_d1=$1
index_d2=$1 und $2
index_d3=$1, $2 und $3
index_themeset=Pers&#246;nliche Auswahl ..
index_desc2=Dieses Modul kann lediglich f&#252;r das &#196;ndern $1 Ihres Webmin-Accounts benutzt werden.
index_dlang=der Sprache, in welcher die Module angezeigt werden
index_dpass=dem Passwort, welches zum Anmelden erforderlich ist,
index_d3=$1, $2 und $3
acl_lang=Darf Sprache &#228;ndern?
change_eoverlay=Sie k&#246;nnen kein ein Thema Overlay ausw&#228;hlen, sofern ein UI theme gew&#228;hlt wurde
index_passagain=Erneute Passworteingabe
index_themedef=Altes Webmin-Design
index_theme=Webmin-Design
index_ok=&#196;nderungen durchf&#252;hren
change_done=.. erledigt
index_dtheme=das Design, welches die Darstellung von Webmin kontrolliert
index_lang=Webmin-Spracheinstellung
index_langglobal=Globale Einstellung ($1)
index_langset=Pers&#246;nliche Auswahl ..
index_ok=&#196;nderungen durchf&#252;hren
index_overlay=Theme overlay
index_overlaydef=Keine - benutze Design Standards
index_pass=Webmin-Passwort
index_passagain=Erneute Passworteingabe
__norefs=1
change_ecolon=Ihr Passwort darf das Zeichen <tt> : </tt> nicht enthalten!
change_user=Modifiziere das Passwort des Webmin-Benutzers ..
index_langglobal2=Globale Sprache .. $1 ($2)
index_passleave=Unver&#228;ndert lassen
index_passset=Einstellen auf ..
index_theme=Webmin-Design
index_themedef=Altes Webmin-Design
index_themeglobal=Globales Design ($1)
index_themeset=Pers&#246;nliche Auswahl ..
index_pass=Webmin-Passwort
index_d1=$1
change_restart=Starte Webmin neu ..
acl_theme=Darf Design &#228;ndern?
index_d2=$1 und $2
index_overlay=Theme overlay
index_title=Sprache und Design von Webmin &#228;ndern
change_redirect=Leite zum Hauptmen&#252; zur&#252;ck ..
change_eoverlay2=Das ausgew&#228;hlte Thema Overlay ist nicht kompatibel mit dem gew&#228;hlten UI Thema
change_title=&#196;ndere die Einstellungen
index_dpass=dem Passwort, welches zum Anmelden erforderlich ist,
index_passset=Einstellen auf ..
acl_pass=Darf das Passwort &#228;ndern, wenn das in Webmin so eingestellt ist?
index_dlang=der Sprache, in welcher die Module angezeigt werden
change_epass=Neues Passwort ist ung&#252;ltig : $1

View File

@@ -1,6 +1,6 @@
index_title=Change Language and Theme
index_lang=Webmin UI language
index_langglobal=Global language ($1)
index_langglobal2=Global language .. $1 ($2)
index_langset=Personal choice ..
index_theme=Webmin UI theme
index_overlay=Theme overlay

View File

@@ -20,7 +20,7 @@ index_dlang=spr&#229;ket modulene vises i
index_dpass=passordet brukt til &#229; logge inn p&#229;
index_dtheme=temaet som kontrollerer Webmins utseende
index_lang=Webmin UI spr&#229;k
index_langglobal=Globalt spr&#229;k ($1)
index_langglobal2=Globalt spr&#229;k .. $1 ($2)
index_langset=Personlig valg
index_ok=Lagre endringer
index_overlay=Tema overstyring

View File

@@ -65,6 +65,7 @@ foreach $m (@ARGV) {
$flags = !-r $file ? "chf" : "rhf";
system("cd /tmp/create-module && find . -name .svn | xargs rm -rf");
system("cd /tmp/create-module && find . -name '*~' -o -name '*.rej' -o -name '*.orig' -o -name '.*.swp' | xargs rm -rf");
system("cd /tmp/create-module && find . -name RELEASE -o -name RELEASE.sh | xargs rm -rf");
unlink("/tmp/create-module/$subdir/IDEAS");
system("cd /tmp/create-module && find . -name \\*.svn-work | xargs rm -rf");
system("cd /tmp/create-module && find . -name \\*.svn-base | xargs rm -rf");

View File

@@ -1407,8 +1407,8 @@ sub extract_input
local ($cmd) = @_;
$cmd =~ s/\\%/\0/g;
local ($cmd, $input) = split(/\%/, $cmd, 2);
$cmd =~ s/\0/%/g;
$input =~ s/\0/%/g;
$cmd =~ s/\0/\\%/g;
$input =~ s/\0/\\%/g;
return ($cmd, $input);
}

View File

@@ -79,6 +79,8 @@ else {
&convert_range($job);
$rangeable = 1;
($command, $input) = &extract_input($job->{'command'});
$command =~ s/\\%/%/g;
$input =~ s/\\%/%/g;
@lines = split(/%/, $input);
print &ui_table_row($text{'edit_command'},
&ui_textbox("cmd", $command, 60));

View File

@@ -122,6 +122,8 @@ foreach $u (@ulist) {
local $max = $config{'max_len'} || 10000;
local ($cmd, $input) =
&extract_input($job->{'command'});
$cmd =~ s/\\%/%/g;
$input =~ s/\\%/%/g;
$cmd = length($cmd) > $max ?
&html_escape(substr($cmd, 0, $max))." ..." :
$cmd !~ /\S/ ? "BLANK" : &html_escape($cmd);

View File

@@ -964,17 +964,13 @@ return $file || $config{'pid_file'};
sub expand_ip_range
{
local ($s, $e) = @_;
local @rs = split(/\./, $s);
local @re = split(/\./, $e);
&foreign_require("net");
local $si = &net::ip_to_integer($s);
local $ei = &net::ip_to_integer($e);
return ( ) if ($si > $ei);
local @rv;
for(my $i=$rs[0]; $i<=$re[0]; $i++) {
for(my $j=$rs[1]; $j<=$re[1]; $j++) {
for(my $k=$rs[2]; $k<=$re[2]; $k++) {
for(my $l=$rs[3]; $l<=$re[3]; $l++) {
push(@rv, "$i.$j.$k.$l");
}
}
}
for(my $i=$si; $i<=$ei; $i++) {
push(@rv, &net::integer_to_ip($i));
}
return @rv;
}

View File

@@ -72,12 +72,12 @@ print "</td></tr>\n";
if (!defined($in{'ret'})) {
print "<tr><td valign=middle><b>$text{'esub_shnet'}</b></td>\n";
print "<td valign=middle>";
my @shn;
push(@shn, [ "", "&lt;$text{'esub_none'}&gt;", ( $s_parent ? "" : "selected" ) ]);
foreach $s (&find("shared-network", $conf)) {
push(@shn, [ $s->{'index'}, ( &can('rw', \%access, $s) ? $s->{'values'}->[0] : "" ), ( $s eq $s_parent ? "" : "selected" ) ]);
}
print &ui_select("parent", undef, \@shn);
my @shn;
push(@shn, [ "", "&lt;$text{'esub_none'}&gt;" ]);
foreach $s (&find("shared-network", $conf)) {
push(@shn, [ $s->{'index'}, ( &can('rw', \%access, $s) ? $s->{'values'}->[0] : "" ) ]);
}
print &ui_select("parent", $s_parent ? $s_parent->{'index'} : "", \@shn);
print "</td>\n";
}
else {

View File

@@ -72,9 +72,10 @@ if ($st[7] != $config{'dhcpd_size'} || $st[9] != $config{'dhcpd_mtime'}) {
# Create lookup type HTML
# XXX change text, add to lookup_*
$matches = ui_select("match", undef, [ [0,$text{'index_match0'},"selected"],
[1,$text{'index_match1'},""],
[2,$text{'index_match2'},""] ]);
$matches = ui_select("match", $config{'match_default'} || 0,
[ [0, $text{'index_match0'} ],
[1, $text{'index_match1'} ],
[2, $text{'index_match2'} ] ]);
# get top-level hosts
foreach $h (&find("host", $conf)) {

View File

@@ -80,6 +80,10 @@ else {
if ($in{'hardware'} =~ /^([0-9a-f]{2})([0-9a-f]{2}).([0-9a-f]{2})([0-9a-f]{2}).([0-9a-f]{2})([0-9a-f]{2}).([0-9a-f]{2})([0-9a-f]{2})$/i) {
$in{'hardware'} = "$1:$2:$3:$4:$5:$6";
}
# Handle an Ethernet address with no formatting at all
if ($in{'hardware'} =~ /^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i) {
$in{'hardware'} = "$1:$2:$3:$4:$5:$6";
}
$in{'hardware'} =~ /^([0-9a-f]{1,2}:)*[0-9a-f]{1,2}$/i ||
&error(&text('shost_invalidhwa', $in{'hardware'},
$in{'hardware_type'}) );

View File

@@ -18,7 +18,6 @@ desc_ja_JP.euc=BIND 4 DNS
depends=bind8
desc_ru_RU=BIND 4 DNS Ñåðâåð
desc_ca=Servidor DNS BIND 4
longdesc=Create and edit domains and DNS records.
desc_zh_TW.UTF-8=BIND 4 DNS 伺æœ<C3A6>器
desc_zh_CN.UTF-8=BIND 4 DNS æœ<C3A6>务器
desc_ja_JP.UTF-8=BIND 4 DNS ãµãƒ¼ãƒ<C3A3>

4
fail2ban/config.info.no Normal file
View File

@@ -0,0 +1,4 @@
config_dir=Fail2Ban konfigurasjonskatalog,0
client_cmd=Full stil til fail2ban-klient kommando,0
server_cmd=Full stil til fail2ban-tjener kommando,0
init_script=Oppstart handlingsnavn,3,Ingen konfigurert

View File

@@ -42,13 +42,13 @@ else {
# Regexp to match
my $fail = &find_value("failregex", $def);
print &ui_table_row($text{'filter_fail'},
&ui_textarea("fail", $fail, 5, 80, "hard")."<br>\n".
&ui_textarea("fail", $fail, 5, 80, "off")."<br>\n".
$text{'filter_desc'});
# Regexp to not match
my $ignore = &find_value("ignoreregex", $def);
print &ui_table_row($text{'filter_ignore'},
&ui_textarea("ignore", $ignore, 5, 80, "hard"));
&ui_textarea("ignore", $ignore, 5, 80, "off"));
print &ui_table_end();
if ($in{'new'}) {

View File

@@ -116,6 +116,7 @@ my @rv;
while(<$fh>) {
s/\r|\n//g;
s/^\s*#.*$//;
s/^\s;.*$//;
if (/^\[([^\]]+)\]/) {
# Start of a section
$sect = { 'name' => $1,

View File

@@ -34,7 +34,7 @@ my @titles = ( $text{'filters_title'}, $text{'actions_title'},
my @icons = ( "images/filters.gif", "images/actions.gif",
"images/jails.gif", "images/config.gif",
"images/manual.gif", );
print &icons_table(\@links, \@titles, \@icons, 5);
&icons_table(\@links, \@titles, \@icons, 5);
# Show start / stop buttons
print &ui_hr();

159
fail2ban/lang/no Normal file
View File

@@ -0,0 +1,159 @@
__norefs=1
action_ban=Kommando for &#229; bannlyse en IP
action_check=Kommando som skal kj&#248;res f&#248;r en IP bannlyses
action_desc=<i>&lt;ip&gt;</i> vil bli erstattet med IP adressen som blir bannlyst.
action_eclash=Handlingsnavn er allerede i bruk
action_edefgone=Handling har ingen Definition seksjon
action_egone=Handling finnes ikke lenger!
action_einuse=Denne handlingen kan ikke slettes siden den brukes av fengslene : $1
action_ename=Manglende eller ugyldig handlingsnavn
action_err=Kunne ikke lagre handling
action_header=Match handling detaljer
action_name=Handling navn
action_start=Kommando som skal kj&#248;res ved Fail2Ban oppstart
action_stop=Kommando som skal kj&#248;res ved Fail2Ban avstenging
action_title1=Opprett Match handling
action_title2=Rediger Match handling
action_unban=Kommando for &#229; fjerne bannlysing av IP
actions_add=Legg til ny handling.
actions_ban=Ban kommando
actions_delete=Slett valgte handlinger
actions_derr=Kunne ikke slette handlinger
actions_einuse=Handlingen $1 kan ikke slettes, siden den brukes i fengslene : $2
actions_enone=Ingen valgt
actions_name=Handling navn
actions_return=liste over handlinger
actions_title=Match handlinger
check_eclient=Klient-kommandoen $1 ble ikke funnet
check_econf=Konfigurasjonsfilen $2 i $1 finnes ikke
check_edir=Konfigurasjonskatalogen $1 finnes ikke
check_eserver=Tjenerkommandoen $1 ble ikke funnet
config_default=Standard m&#229;l
config_edef=Ingen Definition seksjon funnet i konfig.fil!
config_elogtarget=Filen som logger skal skrives til m&#229; v&#230;re en absolutt sti
config_err=Kunne ikke lagre global konfigurasjon
config_esocket=Socket-fil m&#229; v&#230;re en absolutt sti
config_file=Loggfil
config_header=Konfig. innstillinger for Fail2Ban
config_loglevel=Minimum loggingsniv&#229;
config_logtarget=Skriv logger til
config_socket=Socket for kommunikasjon med tjener
config_syslog=Syslog tjeneste
config_title=Global konfigurasjon
filter_desc=Bruk <i>&lt;HOST&gt;</i> i regul&#230;re uttrykk hvor vertsnavn eller IP-adresse skal forekomme.
filter_eclash=Filternavn er allerede i bruk
filter_edefgone=Filter har ingen Definition seksjon
filter_efail=Det ble ikke angitt noe regul&#230;rt uttrykk &#229; matche
filter_egone=Filter finnes ikke lenger!
filter_einuse=Dette filteret kan ikke slettes siden det brukes av fengslene : $1
filter_ename=Manglende eller ugyldig filternavn
filter_err=Kunne ikke lagre filter
filter_fail=Regul&#230;re uttrykk &#229; matche
filter_header=Loggfilter detaljer
filter_ignore=Regul&#230;re uttrykk &#229; ignorere
filter_name=Filternavn
filter_title1=Opprett filter
filter_title2=Rediger filter
filters_add=Legg til nytt loggfilter.
filters_delete=Slett valgte filtere
filters_derr=Kunne ikke slette filtere
filters_einuse=Filteret $1 kan ikke slettes siden det brukes av fengslene : $2
filters_enone=Ingen valgt
filters_name=Filternavn
filters_re=Regul&#230;rt uttrykk
filters_return=liste over filtere
filters_title=Loggfiltere
index_atboot=Start ved oppstart?
index_atbootdesc=Endre denne innstillingen for &#229; kontrollere hvorvidt Fail2Ban tjeneren startes n&#229;r systemet startes opp. Hvis n&#248;dvendig, vil det bli opprettet et oppstartsscript slik at tjeneren startes p&#229; korrekt m&#229;te.
index_echeck=En feil oppstod under oppdaging av Fail2Ban p&#229; dette systemet : $1. Enten er den ikke installert eller s&#229; er <a href='$2'>modulkonfigurasjonen</a> feil.
index_fail2ban=Fail2Ban
index_restart=Omstart Fail2Ban tjener
index_restartdesc=Klikk p&#229; denne knappen for &#229; ta i bruk gjeldende konfigurasjon ved &#229; omstarte Fail2Ban tjeneren.
index_return=modulindeks
index_start=Start Fail2Ban tjener
index_startdesc=Klikk p&#229; denne knappen for &#229; starte Fail2Ban tjeneren, slik at logganalyse blir utf&#248;rt.
index_stop=Stopp Fail2Ban tjener
index_stopdesc=Klikk p&#229; denne knappen for &#229; stoppe Fail2Ban tjeneren. All logganalyse vil umiddelbart stanses.
index_title=Fail2Ban Innbruddsoppdager
jail_action=Handling
jail_actions=Handlinger som skal brukes
jail_aname=Navn
jail_auto=Bestem automatisk
jail_backend=Sjekk for loggfil oppdateringer vha.
jail_banaction=Standard handling &#229; bruke
jail_bantime=Tidsrom IP skal bannlyses i
jail_defprotocol=Standard protokoll for handlinger
jail_destemail=Standard varslings-e-post
jail_eactions=Ingen handlinger valgt!
jail_eaname=Ugyldig utseende parameter for handling $1
jail_ebantime=Tidsrom for bannlysing av IP m&#229; v&#230;re et tall st&#248;rre enn null
jail_eclash=Et fengsel med samme navn finnes allerede
jail_edestemail=Manglende eller ugyldig standard e-post adresse for varslinger
jail_efindtime=Forsinkelse mellom matcher m&#229; v&#230;re et tall st&#248;rre enn null
jail_egone=Fengsel finnes ikke lenger!
jail_eignoreip=Ugyldig IP-adresse &#229; ignorere
jail_elogpath=Alle loggfiler m&#229; v&#230;re absolutte stier eller m&#248;nstere
jail_elogpaths=Ingen loggfil-stier angitt
jail_emaxretry=Matches for en handling tas i bruk m&#229; v&#230;re et tall st&#248;rre enn null
jail_enabled=Aktivert for &#248;yeblikket?
jail_ename=Manglende eller ugyldig fengsel-navn
jail_eport=Ugyldig portnummer for handling $1
jail_err=Kunne ikke lagre fengsel
jail_filter=Filter det skal s&#248;kes i logg etter
jail_findtime=Maks forsinkelse mellom matcher
jail_gamin=Gamin filendrings-overv&#229;ker
jail_header=Detaljer for filter-handling fengsel
jail_ignoreip=IP-adresser som aldri skal bannlyses
jail_logpath=Loggfil stier
jail_maxretry=Matcher f&#248;r en handling tas i bruk
jail_name=Fengsel-navn
jail_none=Ingen satt
jail_others=Andre parametere
jail_polling=Bakgrunns-polling
jail_port=Port
jail_protocol=Protokoll
jail_title1=Opprett fengsel
jail_title2=Rediger fengsel
jaildef_egone=Ingen STANDARD fengsel funnet!
jaildef_err=Kunne ikke lagre standard-innstillinger for fengsel
jaildef_header=Standarder for alle fenglse
jaildef_title=Standard fengsel-innstillinger
jails_action=Resulterende handlinger
jails_add=Legg til nytt fengsel.
jails_def=Rediger fengsel standardverdier
jails_defdesc=Rediger standard innstillinger og begrensinger som gjelder for alle fengsle listet ovenfor, s&#229; som antall p&#229;krevde matcher og hvor lenge en IP skal bannlyses.
jails_delete=Slett valgte fengsle
jails_derr=Kunne ikke slette fengsle
jails_enabled=Aktivert?
jails_enone=Ingen valgt
jails_filter=Logg-filter
jails_name=Fengsel-navn
jails_return=liste over fengsler
jails_title=Filter-handling fengsler
log_atboot=Aktiverte Fail2Ban ved systemoppstart
log_config=Endret global konfigurasjon
log_create_action=Opprettet handling $1
log_create_filter=Opprettet filter $1
log_create_jail=Opprettet fengsel $1
log_delboot=Deaktiverte Fail2Ban ved oppstart
log_delete_action=Slettet handling $1
log_delete_filter=Slettet filter $1
log_delete_jail=Slettet fengsel $1
log_jaildef=Endret standard-innstillinger for fengsel
log_manual=Redigerte konfigurasjonsfil $1
log_restart=Omstartet Fail2Ban tjener
log_start=Startet Fail2Ban tjener
log_stop=Stoppet Fail2Ban tjener
log_update_action=Endret handling $1
log_update_filter=Endret filter $1
log_update_jail=Endret fengsel $1
manual_desc=Fil som skal redigeres:
manual_edata=Ingen konfig.fil innhold angitt
manual_efile=Valgt fil er ikke en del av Fail2Ban konfigurasjonen!
manual_err=Kunne ikke redigere konfigurasjonsfil
manual_ok=OK
manual_title=Rediger konfig.filer
restart_err=Kunne ikke omstarte tjener
start_err=Kunne ikke starte tjener
stop_err=Kunne ikke stoppe tjener
syslog_logtarget=Fail2Ban handlingslogg

View File

@@ -9,3 +9,4 @@ longdesc_ms_MY=Fail2ban melindungi sistem anda dari serangan kekerasan dengan me
syslog=1
desc_ca=Detector d'Intrusions Fail2Ban
longdesc_ca=Fail2ban protegeix el teu sistema d'atacs de força bruta detectant i bloquejant les IPs d'origen
desc_no=Fail2Ban innbrudds-oppdager

View File

@@ -74,7 +74,6 @@ else {
push(@opts, split(/\s+/, $in{"others_$i"}));
push(@actions, $in{"action_$i"}."[".join(", ", @opts)."]");
}
@actions || &error($text{'jail_eactions'});
# Split and validate log file paths
my @logpaths = split(/\r?\n/, $in{'logpath'});
@@ -110,7 +109,8 @@ else {
# Save directives within the section
&save_directive("enabled", $in{'enabled'} ? 'true' : 'false', $jail);
&save_directive("filter", $in{'filter'}, $jail);
&save_directive("action", join("\n", @actions), $jail);
&save_directive("action", @actions ? join("\n", @actions)
: undef, $jail);
&save_directive("logpath", join("\n", @logpaths), $jail);
foreach my $f ("maxretry", "findtime", "bantime") {
&save_directive($f, $in{$f."_def"} ? undef : $in{$f}, $jail);

View File

@@ -87,6 +87,7 @@ else {
$ucount > $config{'max_users'});
}
endpwent() if ($gconfig{'os_type'} ne 'hpux');
@users = sort { $a->[1]->[0] cmp $b->[1]->[0] } @users;
if (!@users) {
# None found
print "<br><b>$text{'index_none'}</b><p>\n";

View File

@@ -1,5 +1,5 @@
virtualmin_spam=Camí complet del programa de consulta de spam d'usuaris de Virtualmin,3,No està instal·lat,40
virtualmin_config=Camí complet del directori de configuració de Virtualmin,3,No instal·lat
virtualmin_config=Camí complet del directori de configuracio de Virtualmin,3,No instal·lat
virtualmin_spam=Camí complet del programa de consulta d'usuaris de spam de Virtualmin,3,No instal·lat,40
warn_procmail=Mostra un avís si Procmail no està instal·lat,1,1-Sí,0-No
forward_procmail=Crea fitxer .forward per executar procmail,1,1-Sí,0-No
alias_files=Camí complet dels fitxers d'àlies globals,9,40,3,\t

View File

@@ -155,7 +155,7 @@ if (($table->{'name'} eq 'nat' && $rule->{'chain'} ne 'PREROUTING' &&
&can_jump("SNAT")) {
if ($rule->{'j'}->[1] eq 'SNAT') {
if ($rule->{'to-source'}->[1] =~
/^([0-9\.]+)(\-([0-9\.]+))?(:(\d+)(\-(\d+))?)?$/) {
/^([0-9\.]+)?(\-([0-9\.]+))?(:(\d+)(\-(\d+))?)?$/) {
$sipfrom = $1;
$sipto = $3;
$spfrom = $5;

View File

@@ -49,6 +49,7 @@ if (!$config{'direct'} && &foreign_check("init")) {
# rules, and offer to create a save file from them
@livetables = &get_iptables_save("iptables-save 2>/dev/null |");
&shorewall_message(\@livetables);
&firewalld_message(\@livetables);
if (!$config{'direct'} &&
(!-s $iptables_save_file || $in{'reset'}) && $access{'setup'}) {
@tables = @livetables;
@@ -420,3 +421,13 @@ if ($filter->{'defaults'}->{'shorewall'}) {
}
}
sub firewalld_message
{
local ($filter) = grep { $_->{'name'} eq 'filter' } @{$_[0]};
if ($filter->{'defaults'}->{'INPUT_ZONES'}) {
print "<b><center>",
&text('index_firewalld', "$gconfig{'webprefix'}/firewalld/"),
"</b></center><p>\n";
}
}

View File

@@ -45,6 +45,8 @@ index_applydesc=Fes clic sobre aquest bot
index_applydesc2=Fes clic sobre aquest botó per fer que la configuració del tallafocs llistada a sobre sigui activa a tots els servidors del cluster. Totes les regles que estiguin actualment en efecte seran descartades i reemplaçades.
index_unapply=Reverteix la Configuració
index_unapplydesc=Fes clic sobre aquest botó per reiniciar la configuració llistada a sobre amb els valors de la que està actualment activa.
index_unapply2=Desa la Configuració
index_unapply2desc=Fes clic sobre aquest botó per desar la configuració de sobre al fitxer permanent de configuració del tallafoc.
index_table_filter=Filtratge de paquets (filter)
index_table_nat=Traducció d'adreces de xarxa (nat)
index_table_mangle=Alteració de paquets (mangle)

View File

@@ -23,6 +23,7 @@ apply_err=Fehlgeschlagen die Konfiguration anzuwenden
apply_remote=Fehler von $1 : $2
bootup_ecannot=Es ist Ihnen nicht erlaubt die Firewall beim Booten zu aktivieren oder zu deaktivieren
clear_ecannot=Es ist Ihnen nicht erlaubt die Regeln zu leeren
clear_rusure=Sind Sie sicher, dass Sie alle $2 Regeln von Kette $1 l&#246;schen m&#246;chten?
clear_title=Regeln leeren
cluster_add=F&#252;ge Server hinzu
cluster_delete=Ausgew&#228;hltes l&#246;schen
@@ -36,6 +37,7 @@ cluster_return=Cluster Server
cluster_title=Cluster Firewall Server
delete_ecannot=Es ist Ihnen nicht erlaubt die Regeln zu l&#246;schen
delete_ok=L&#246;sche jetzt
delete_rusure=Sind Sie sicher, dass Sie die Kette $1 l&#246;schen m&#246;chten? $2 Regeln werden in ihr gel&#246;scht.
delete_title=L&#246;sche Regel
desc_always=Immer
desc_and=und
@@ -170,6 +172,7 @@ index_auto5=Blockiere alles ausgenommen Ports die f&#252;r virtuelles Hosting be
index_bootup=Aktiviere beim Booten
index_bootupdesc=&#196;ndert die Option, um zu kontrollieren, ob Ihre Firewall beim Booten aktiviert ist oder nicht.
index_cclear=L&#246;sche alle Regeln
index_cdelete=L&#246;sche Kette
index_cdeletesel=L&#246;sches ausgew&#228;hltes
index_chain=Regel $1
index_chain_forward=Weitergeleitete Pakete (FORWARD) - Gilt nur f&#252;r Pakete, die dieser Host weitergeleitet hat
@@ -182,11 +185,13 @@ index_cluster=Cluster Server
index_clusterdesc=Klicken Sie auf diese Schaltfl&#228;che, um zus&#228;tzliche Webmin-Server einzurichten, mit denen die Firewall-Konfiguration automatisch kopiert werden.
index_cmovesel=Verschiebe ausgew&#228;hlte
index_comm=Kommentar
index_crename=Benenne Kette um
index_desc=Bedingung
index_ecommand=Der Befehl $1 wurde nicht auf Ihrem System gefunden. Webmin ben&#246;tigt diesen Befehl um IPtables zu konfigurieren.
index_editing=Regel Datei $1
index_ekernel=Ein Fehler ist beim &#220;berpr&#252;fen Ihrer aktuellen IPtables-Konfiguration aufgetreten : $1 Dies k&#246;nnte darauf hindeuten, dass Ihr Kernel IPtables nicht unterst&#252;tzt.
index_existing=Webmin hat erkannt, dass $1 IPtables Firewall-Regel(n) derzeit in Benutzung sind, die nicht in der Datei $2 gespeichert wurden. Diese Regeln wurden vermutlich von einem Skript einrichtet, jedoch dieses Modul nicht in der Lage ist, dieses zu lesen und zu bearbeiten.<p>Wenn Sie dieses Modul benutzen wollen, um Ihre IPtables-Firewall verwalten zu lassen, klicken Sie auf die Schaltfl&#228;che unten, um die bestehenden Regeln zu einer Sicherungsdatei zu konvertieren und anschlie&#223;end Ihr bestehendes Firewall-Skript zu deaktivieren.
index_firewalld=Warnung! Es scheint, dass FirewallD verwendet wird, um das Firewall-System zu generieren. Vielleicht sollten Sie die <a href='$1'>FirewallD Firewall-Modul</a> verwenden.
index_header=Firewall Konfiguration von $1
index_headerex=Bestehende Firewall Konfiguration
index_jump=F&#252;hre Regel $1 aus
@@ -199,6 +204,7 @@ index_jump_masquerade=Maskieren
index_jump_queue=<font color=#0000ff>Userspace</font>
index_jump_redirect=Leite um
index_jump_reject=<font color=#ff4400>Zur&#252;ckweisen</font>
index_jump_return=Beende Kette
index_jump_snat=Quell NAT
index_move=Verschieben
index_policy=Setze Standard-Aktion auf:
@@ -227,17 +233,24 @@ log_bootdown=Firewall beim Booten deaktiviert
log_bootup=Firewall beim Booten aktiviert
log_convert=Bestehende Firewall konvertiert
log_openports=Firewallports $1 ge&#246;ffnet
log_rename_chain=Kette $1 in Tabelle $2 umbenannt
log_setup=Firewall eingerichtet
log_unapply=Konfiguration zur&#252;ckgesetzt
move_chain=Aktuelle &#196;nderung
move_count=Regeln ausgew&#228;hlt
move_dest=Ziel-Kette
move_header=Regel Verschiebe-Optionen
move_ok=Verschiebe jetzt
move_title=Verschiebe Regeln
new_ecannot=Es ist Ihnen nicht erlaubt Ketten zu erstellen
new_ename=Fehlender oder ung&#252;ltiger Ketten-Name
new_err=Fehlgeschlagen eine Regel zu erstellen
new_etaken=Eine Regeln mit diesem Namen existiert bereits
redhat_einstalled=Kein <tt>iptables</tt> Systemstart Aktion wurde festgestellt, was darauf hinweist, dass das IPtables-Paket nicht auf Ihrem System installiert ist.
redhat_eoutput=Ein Fehler ist beim Abrufen des IPtables Status von dem Befehl $1 aufgetreten. Dies ist wahrscheinlich darauf zur&#252;ckzuf&#252;hren, dass Ihr System so konfiguriert wurde, IPchains anstelle von IPtables zu benutzen.
rename_chain=Aktueller Name
rename_count=Regel in Kette
rename_ecannot=Es ist Ihnen nicht erlaubt Ketten umzubenennen
rename_name=Neuer Name
rename_none=Nichts
rename_ok=Umbenenne jetzt

View File

@@ -68,6 +68,7 @@ index_auto5=Block all except ports used for virtual hosting, on interface:
index_auto=Setup Firewall
index_add=Add
index_shorewall=Warning! It appears that Shorewall is being used to generate your system's firewall. Maybe you should use the <a href='$1'>Shoreline Firewall module</a> instead.
index_firewalld=Warning! It appears that FirewallD is being used to generate your system's firewall. Maybe you should use the <a href='$1'>FirewallD module</a> instead.
index_reset=Reset Firewall
index_resetdesc=Click this button to clear all existing firewall rules and set up new rules for a basic initial configuration.
index_cluster=Cluster Servers

View File

@@ -233,6 +233,8 @@ index_table_mangle=Pakke endring (mangle)
index_table_nat=Nettverksadresse oversetting (nat)
index_title=Linux brannmur
index_unapply=Tilbakestill konfigurasjon
index_unapply2=Lagre konfigurasjon
index_unapply2desc=Klikk p&#229; denne knappen for &#229; lagre konfigurasjonen ovenfor i den permanente brannmur-konfigurasjonsfilen
index_unapplydesc=Klikk p&#229; denne knappen for &#229; tilbakestille konfigurasjonen ovenfor til den konfigurasjonen som er aktive for &#248;yeblikket.
log_add_group=Added cluster servers from group $1
log_add_host=Added cluster server $1
@@ -267,8 +269,8 @@ new_ename=Missing or invalid chain name
new_err=Failed to create chain
new_etaken=A chain with this name already exists
policy_ecannot=You are not allowed to change the default policy for this chain
redhat_einstalled=Ingen oppstartshandling for <tt>iptables</tt> ble funnet, noe som antyder at IPtables pakken ikke er installert p&#229; systemet ditt
redhat_eoutput=An error occured getting IPtables status from the command $1. This probably indicates that your system has been configured to use IPchains instead of IPtables.
redhat_escript=Oppstarts-script $1 for Redhat IPtables ble ikke funnet p&#229; ditt system.
rename_adjust=Endre andre regler som hopper til denne kjeden?
rename_chain=Gjeldende navn
rename_count=Regler i kjede

View File

@@ -21,3 +21,4 @@ desc_no=Linux brannmur
desc_hu=Linux tûzfal (Iptables)
longdesc_ms_MY=Mengkonfigurasi firewall linux menggunakan iptables. Membenarkan untuk mengubah kesemua jadual, kunci, aturan dan pilihan.
desc_ms_MY=Firewall Linux
longdesc_de=Konfiguriert eine Linux-Firewall mit iptables. Erm&#246;glicht die Bearbeitung aller Tabellen, Ketten, Regeln und Optionen.

View File

@@ -116,7 +116,8 @@ else {
if ($table->{'name'} eq 'nat' && $rule->{'chain'} ne 'PREROUTING' &&
$rule->{'chain'} ne 'OUTPUT') {
if ($rule->{'j'}->[1] eq 'SNAT' && !$in{'snatdef'}) {
&check_ipaddress($in{'sipfrom'}) ||
(!$in{'sipfrom'} && !$in{'sipto'}) ||
&check_ipaddress($in{'sipfrom'}) ||
&error($text{'save_esipfrom'});
!$in{'sipto'} || &check_ipaddress($in{'sipto'}) ||
&error($text{'save_esipto'});
@@ -406,9 +407,13 @@ else {
sub check_ipmask
{
return &to_ipaddress($_[0]) ||
$_[0] =~ /^([0-9\.]+)\/([0-9\.]+)$/ &&
&to_ipaddress("$1") &&
(&check_ipaddress("$2") || ($2 =~ /^\d+$/ && $2 <= 32));
foreach my $w (split(/,/, $_[0])) {
my $ok = &to_ipaddress($w) ||
$w =~ /^([0-9\.]+)\/([0-9\.]+)$/ &&
&to_ipaddress("$1") &&
(&check_ipaddress("$2") || ($2 =~ /^\d+$/ && $2 <= 32));
return 0 if (!$ok);
}
return 1;
}

2
firewalld/CHANGELOG Normal file
View File

@@ -0,0 +1,2 @@
---- Changes since 1.750 ----
First version of this module, for configuring allowed ports and services in FirewallD.

18
firewalld/bootup.cgi Executable file
View File

@@ -0,0 +1,18 @@
#!/usr/local/bin/perl
# Enable or disable firewalld at boot time
use strict;
use warnings;
require './firewalld-lib.pl';
our (%in, %config);
&ReadParse();
&foreign_require("init");
if ($in{'boot'}) {
&init::enable_at_boot($config{'init_name'});
}
else {
&init::disable_at_boot($config{'init_name'});
}
&webmin_log($in{'boot'} ? "bootup" : "bootdown");
&redirect("index.cgi?zone=".&urlize($in{'zone'}));

2
firewalld/config Normal file
View File

@@ -0,0 +1,2 @@
firewall_cmd=firewall-cmd
init_name=firewalld

2
firewalld/config.info Normal file
View File

@@ -0,0 +1,2 @@
firewall_cmd=Full path to firewall-cmd program,0
init_name=FirewallD init script name,0

2
firewalld/config.info.de Normal file
View File

@@ -0,0 +1,2 @@
firewall_cmd=Voller Pfad zum firewall-cmd Programm,0
init_name=FirewallD init&#45;script&#45;Name,0

77
firewalld/create_zone.cgi Normal file
View File

@@ -0,0 +1,77 @@
#!/usr/local/bin/perl
# Create a new zone, and add some allowed ports to it
use strict;
use warnings;
require 'firewalld-lib.pl';
our (%text, %in);
&ReadParse();
&error_setup($text{'zone_err'});
# Validate inputs
$in{'name'} =~ /^[a-z0-9\.\_\-]+$/i || &error($text{'zone_ename'});
my @zones = &list_firewalld_zones();
my ($clash) = grep { $_->{'name'} eq $in{'name'} } @zones;
$clash && &error($text{'zone_eclash'});
# Add the zone
my $err = &create_firewalld_zone($in{'name'});
&error($err) if ($err);
# Find the Webmin port
my @webminports;
if (&foreign_installed("webmin")) {
&foreign_require("webmin");
my @socks = &webmin::get_miniserv_sockets();
@webminports = &unique(map { $_->[1] } @webminports);
}
else {
@webminports = ( $ENV{'SERVER_PORT'} || 10000 );
}
# Work out which ports to allow
my (@addports, @addservs);
if ($in{'mode'} == 1) {
# Copy from another zone
my ($source) = grep { $_->{'name'} eq $in{'source'} } @zones;
@addports = @{$source->{'ports'}};
@addservs = @{$source->{'services'}};
}
elsif ($in{'mode'} >= 2) {
# SSH, Webmin and Ident
push(@addports, "ssh/tcp", "auth/tcp");
foreach my $webminport (@webminports) {
push(@addports, $webminport."-".($webminport+10)."/tcp");
}
if ($in{'mode'} >= 3) {
# High ports
push(@addports, "1024-65535/tcp");
}
if ($in{'mode'} >= 4) {
# Other virtual hosting ports
push(@addports, "53/tcp", "53/udp"); # DNS
push(@addports, "80/tcp", "443/tcp"); # HTTP
push(@addports, "25/tcp", "587/tcp"); # SMTP
push(@addports, "20/tcp", "21/tcp"); # FTP
push(@addports, "110/tcp", "995/tcp"); # POP3
push(@addports, "143/tcp", "220/tcp", "993/tcp"); # IMAP
push(@addports, "20000/tcp"); # Usermin
}
}
# Add the ports and services
my $zone = { 'name' => $in{'name'} };
foreach my $p (@addports) {
my $err = &create_firewalld_port($zone, split(/\//, $p));
&error($err) if ($err);
}
foreach my $s (@addservs) {
my $err = &create_firewalld_service($zone, $s);
&error($err) if ($err);
}
&webmin_log("create", "zone", $in{'name'});
&redirect("index.cgi?zone=".&urlize($in{'name'}));

View File

@@ -0,0 +1,21 @@
#!/usr/local/bin/perl
# Make a zone the default
use strict;
use warnings;
require 'firewalld-lib.pl';
our (%text, %in);
&ReadParse();
&error_setup($text{'defzone_err'});
# Get the zone
my @zones = &list_firewalld_zones();
my ($zone) = grep { $_->{'name'} eq $in{'zone'} } @zones;
$zone || &error($text{'port_ezone'});
# Make the default
my $err = &default_firewalld_zone($zone);
&error($err) if ($err);
&webmin_log("default", "zone", $zone->{'name'});
&redirect("index.cgi?zone=".&urlize($zone->{'name'}));

View File

@@ -0,0 +1,32 @@
#!/usr/local/bin/perl
# Delete multiple ports or services
use strict;
use warnings;
require 'firewalld-lib.pl';
our (%in, %text);
&error_setup($text{'delete_err'});
&ReadParse();
my @d = split(/\0/, $in{'d'});
@d || &error($text{'delete_enone'});
my @zones = &list_firewalld_zones();
my ($zone) = grep { $_->{'name'} eq $in{'zone'} } @zones;
$zone || &error($text{'port_ezone'});
foreach my $d (@d) {
my @w = split(/\//, $d);
my $err;
if ($w[0] eq "port") {
$err = &delete_firewalld_port($zone, $w[1], $w[2]);
}
elsif ($w[0] eq "service") {
$err = &delete_firewalld_service($zone, $w[1]);
}
else {
next;
}
&error(&text('delete_edel', $d, $err)) if ($err);
}
&webmin_log("delete", "rules", scalar(@d));
&redirect("index.cgi?zone=".&urlize($zone->{'name'}));

39
firewalld/delete_zone.cgi Normal file
View File

@@ -0,0 +1,39 @@
#!/usr/local/bin/perl
# Delete a zone, after asking for confirmation
use strict;
use warnings;
require 'firewalld-lib.pl';
our (%text, %in);
&ReadParse();
&error_setup($text{'delzone_err'});
# Get the zone
my @zones = &list_firewalld_zones();
my ($zone) = grep { $_->{'name'} eq $in{'zone'} } @zones;
$zone || &error($text{'port_ezone'});
$zone->{'default'} && &error($text{'delzone_edefault'});
if ($in{'confirm'}) {
# Just do it
my $err = &delete_firewalld_zone($zone);
&error($err) if ($err);
&webmin_log("delete", "zone", $zone->{'name'});
&redirect("index.cgi");
}
else {
# Ask first
&ui_print_header(undef, $text{'delzone_title'}, "");
print &ui_confirmation_form("delete_zone.cgi",
&text('delzone_rusure', "<tt>$zone->{'name'}</tt>",
scalar(@{$zone->{'ports'}}),
scalar(@{$zone->{'services'}})),
[ [ 'zone', $zone->{'name'} ] ],
[ [ 'confirm', $text{'delete'} ] ],
);
&ui_print_footer("index.cgi?zone=".&urlize($in{'zone'}),
$text{'index_return'});
}

68
firewalld/edit_port.cgi Normal file
View File

@@ -0,0 +1,68 @@
#!/usr/local/bin/perl
# Show a form to edit one port or port range
use strict;
use warnings;
require 'firewalld-lib.pl';
our (%in, %text);
&ReadParse();
# Get the zone and rule
my @zones = &list_firewalld_zones();
my ($zone) = grep { $_->{'name'} eq $in{'zone'} } @zones;
$zone || &error($text{'port_ezone'});
my ($mode, $ports, $proto, $port, $portlow, $porthigh);
if (!$in{'new'}) {
&ui_print_header(undef, $text{'port_edit'}, "");
($ports, $proto) = split(/\//, $in{'id'});
if ($ports =~ /^(\d+)\-(\d+)$/) {
$mode = 1;
($portlow, $porthigh) = ($1, $2);
}
else {
$mode = 0;
$port = $ports;
}
}
else {
&ui_print_header(undef, $text{'port_create'}, "");
$mode = 0;
$proto = "tcp";
}
print &ui_form_start("save_port.cgi", "post");
print &ui_hidden("zone", $in{'zone'});
print &ui_hidden("id", $in{'id'});
print &ui_hidden("new", $in{'new'});
print &ui_table_start($text{'port_header'}, undef, 2);
# Zone name
print &ui_table_row($text{'port_zone'},
"<tt>".&html_escape($zone->{'name'})."</tt>");
# Port number or range
print &ui_table_row($text{'port_port'},
&ui_radio_table("mode", $mode,
[ [ 0, $text{'port_mode0'},
&ui_textbox("port", $port, 6) ],
[ 1, $text{'port_mode1'},
&ui_textbox("portlow", $portlow, 6)." - ".
&ui_textbox("porthigh", $porthigh, 6) ] ]));
# Protocol name
print &ui_table_row($text{'port_proto'},
&ui_select("proto", $proto,
[ [ "tcp", "TCP" ],
[ "udp", "UDP" ] ], 1, 0, 1));
print &ui_table_end();
if ($in{'new'}) {
print &ui_form_end([ [ undef, $text{'create'} ] ]);
}
else {
print &ui_form_end([ [ undef, $text{'save'} ],
[ 'delete', $text{'delete'} ] ]);
}
&ui_print_footer("index.cgi?zone=".&urlize($zone->{'name'}),
$text{'index_return'});

47
firewalld/edit_serv.cgi Normal file
View File

@@ -0,0 +1,47 @@
#!/usr/local/bin/perl
# Show a form to edit one service
use strict;
use warnings;
require 'firewalld-lib.pl';
our (%in, %text);
&ReadParse();
# Get the zone and rule
my @zones = &list_firewalld_zones();
my ($zone) = grep { $_->{'name'} eq $in{'zone'} } @zones;
$zone || &error($text{'port_ezone'});
my $serv;
if (!$in{'new'}) {
&ui_print_header(undef, $text{'serv_edit'}, "");
$serv = $in{'id'};
}
else {
&ui_print_header(undef, $text{'serv_create'}, "");
}
print &ui_form_start("save_serv.cgi", "post");
print &ui_hidden("zone", $in{'zone'});
print &ui_hidden("id", $in{'id'});
print &ui_hidden("new", $in{'new'});
print &ui_table_start($text{'serv_header'}, undef, 2);
# Zone name
print &ui_table_row($text{'port_zone'},
"<tt>".&html_escape($zone->{'name'})."</tt>");
# Service name
print &ui_table_row($text{'serv_name'},
&ui_select("serv", $serv, [ &list_firewalld_services() ]));
print &ui_table_end();
if ($in{'new'}) {
print &ui_form_end([ [ undef, $text{'create'} ] ]);
}
else {
print &ui_form_end([ [ undef, $text{'save'} ],
[ 'delete', $text{'delete'} ] ]);
}
&ui_print_footer("index.cgi?zone=".&urlize($zone->{'name'}),
$text{'index_return'});

220
firewalld/firewalld-lib.pl Normal file
View File

@@ -0,0 +1,220 @@
# Functions for managing firewalld
BEGIN { push(@INC, ".."); };
use strict;
use warnings;
use WebminCore;
&init_config();
do 'md5-lib.pl';
our ($module_root_directory, %text, %config, %gconfig);
our %access = &get_module_acl();
# check_firewalld()
# Returns an error message if firewalld is not installed, undef if all is OK
sub check_firewalld
{
&has_command($config{'firewall_cmd'}) ||
return &text('check_ecmd', "<tt>".$config{'firewall_cmd'}."</tt>");
return undef;
}
# is_firewalld_running()
# Returns 1 if the server is running, 0 if not
sub is_firewalld_running
{
my $ex = system("$config{'firewall_cmd'} --state >/dev/null 2>&1 </dev/null");
return $ex ? 0 : 1;
}
# list_firewalld_zones([active-only])
# Returns an array of firewalld zones, each of which is a hash ref with fields
# like services and ports
sub list_firewalld_zones
{
my ($active) = @_;
my @rv;
my $out = &backquote_command("$config{'firewall_cmd'} --list-all-zones ".
($active ? "" : "--permanent ")."</dev/null 2>&1");
if ($?) {
&error("Failed to list zones : $out");
}
my $zone;
foreach my $l (split(/\r?\n/, $out)) {
if ($l =~ /^(\S+)(\s+\(.*\))?/) {
# New zone
$zone = { 'name' => $1,
'default' => $2 ? 1 : 0 };
push(@rv, $zone);
}
elsif ($l =~ /^\s+(\S+):\s*(.*)/ && $zone) {
# Option in some zone
$zone->{$1} = [ split(/\s+/, $2) ];
}
}
return @rv;
}
# list_firewalld_services()
# Returns an array of known service names
sub list_firewalld_services
{
my $out = &backquote_command("$config{'firewall_cmd'} --get-services </dev/null 2>&1");
if ($?) {
&error("Failed to list services : $out");
}
$out =~ s/\r|\n//g;
return split(/\s+/, $out);
}
# create_firewalld_port(&zone, port|range, proto)
# Adds a new allowed port to a zone. Returns undef on success or an error
# message on failure
sub create_firewalld_port
{
my ($zone, $port, $proto) = @_;
my $out = &backquote_logged("$config{'firewall_cmd'} ".
"--zone ".quotemeta($zone->{'name'})." ".
"--permanent --add-port ".
quotemeta($port)."/".quotemeta($proto)." 2>&1");
return $? ? $out : undef;
}
# delete_firewalld_port(&zone, port|range, proto)
# Delete one existing port from a zone. Returns undef on success or an error
# message on failure
sub delete_firewalld_port
{
my ($zone, $port, $proto) = @_;
my $out = &backquote_logged("$config{'firewall_cmd'} ".
"--zone ".quotemeta($zone->{'name'})." ".
"--permanent --remove-port ".
quotemeta($port)."/".quotemeta($proto)." 2>&1");
return $? ? $out : undef;
}
# create_firewalld_service(&zone, service)
# Adds a new allowed service to a zone. Returns undef on success or an error
# message on failure
sub create_firewalld_service
{
my ($zone, $service) = @_;
my $out = &backquote_logged("$config{'firewall_cmd'} ".
"--zone ".quotemeta($zone->{'name'})." ".
"--permanent --add-service ".
quotemeta($service)." 2>&1");
return $? ? $out : undef;
}
# delete_firewalld_service(&zone, service)
# Delete one existing service from a zone. Returns undef on success or an error
# message on failure
sub delete_firewalld_service
{
my ($zone, $service) = @_;
my $out = &backquote_logged("$config{'firewall_cmd'} ".
"--zone ".quotemeta($zone->{'name'})." ".
"--permanent --remove-service ".
quotemeta($service)." 2>&1");
return $? ? $out : undef;
}
# apply_firewalld()
# Make the current saved config active
sub apply_firewalld
{
my $out = &backquote_logged("$config{'firewall_cmd'} --reload 2>&1");
return $? ? $out : undef;
}
# stop_firewalld()
# Shut down the firewalld service
sub stop_firewalld
{
&foreign_require("init");
my ($ok, $err) = &init::stop_action($config{'init_name'});
return $ok ? undef : $err;
}
# start_firewalld()
# Shut down the firewalld service
sub start_firewalld
{
&foreign_require("init");
my ($ok, $err) = &init::start_action($config{'init_name'});
return $ok ? undef : $err;
}
# list_system_interfaces()
# Returns the list of all interfaces on the system
sub list_system_interfaces
{
&foreign_require("net");
my @rv = map { $_->{'name'} } &net::active_interfaces();
push(@rv, map { $_->{'name'} } &net::boot_interfaces());
return &unique(@rv);
}
# update_zone_interfaces(&zone, &interface-list)
# Update the interfaces a zone applies to
sub update_zone_interfaces
{
my ($zone, $newifaces) = @_;
my $oldifaces = $zone->{'interfaces'};
foreach my $i (&list_system_interfaces()) {
my $inold = &indexof($i, @$oldifaces) >= 0;
my $innew = &indexof($i, @$newifaces) >= 0;
my $args;
if ($inold && !$innew) {
# Remove from this zone
$args = "--remove-interface ".quotemeta($i);
}
elsif (!$inold && $innew) {
# Add to from this zone
$args = "--add-interface ".quotemeta($i);
}
else {
next;
}
my $cmd = "$config{'firewall_cmd'} ".
"--zone ".quotemeta($zone->{'name'})." ".
"--permanent ".$args;
my $out = &backquote_logged($cmd." 2>&1 </dev/null");
return $out if ($?);
}
return undef;
}
# create_firewalld_zone(name)
# Add a new zone with the given name
sub create_firewalld_zone
{
my ($name) = @_;
my $cmd = "$config{'firewall_cmd'} --permanent --new-zone ".quotemeta($name);
my $out = &backquote_logged($cmd." 2>&1 </dev/null");
return $? ? $out : undef;
}
# delete_firewalld_zone(&zone)
# Removes the specified zone
sub delete_firewalld_zone
{
my ($zone) = @_;
my $cmd = "$config{'firewall_cmd'} --permanent --delete-zone ".
quotemeta($zone->{'name'});
my $out = &backquote_logged($cmd." 2>&1 </dev/null");
return $? ? $out : undef;
}
# default_firewalld_zone(&zone)
# Makes the specified zone the default
sub default_firewalld_zone
{
my ($zone) = @_;
my $cmd = "$config{'firewall_cmd'} --set-default-zone ".
quotemeta($zone->{'name'});
my $out = &backquote_logged($cmd." 2>&1 </dev/null");
return $? ? $out : undef;
}
1;

BIN
firewalld/images/icon.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

147
firewalld/index.cgi Normal file
View File

@@ -0,0 +1,147 @@
#!/usr/local/bin/perl
# Show all firewalld rules and zones
use strict;
use warnings;
require 'firewalld-lib.pl';
our (%in, %text, %config, %access, $base_remote_user);
&ReadParse();
if ($in{'addzone'}) {
# Redirect to zone creation form
&redirect("zone_form.cgi?zone=".&urlize($in{'zone'}));
return;
}
if ($in{'delzone'}) {
# Redirect to zone deletion form
&redirect("delete_zone.cgi?zone=".&urlize($in{'zone'}));
return;
}
if ($in{'defzone'}) {
# Make a zone the default
&redirect("default_zone.cgi?zone=".&urlize($in{'zone'}));
return;
}
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
# Is firewalld working?
my $err = &check_firewalld();
if ($err) {
&ui_print_endpage(&text('index_cerr', $err));
return;
}
# Get rules and zones
my @zones = &list_firewalld_zones();
@zones || &error($text{'index_ezones'});
my $zone;
if ($in{'zone'}) {
($zone) = grep { $_->{'name'} eq $in{'zone'} } @zones;
}
else {
($zone) = grep { $_->{'default'} } @zones;
}
$zone ||= $zones[0];
my @azones = &list_firewalld_zones(1);
my ($azone) = grep { $_->{'name'} eq $zone->{'name'} } @azones;
# Show zone selector
print &ui_form_start("index.cgi");
print "<b>$text{'index_zone'}</b> ",
&ui_select("zone", $zone->{'name'},
[ map { [ $_->{'name'},
$_->{'name'}.($_->{'default'} ? ' (default)' : '') ]}
@zones ], 1, 0, 0, 0,
"onChange='form.submit()'")," ",
&ui_submit($text{'index_zoneok'})," &nbsp; ",
&ui_submit($text{'index_zonedef'}, "defzone")," ",
&ui_submit($text{'index_zonedel'}, "delzone")," &nbsp; ",
&ui_submit($text{'index_zoneadd'}, "addzone")," ",
"<p>\n";
print &ui_form_end();
# Show allowed ports and services in this zone
my @links = ( &ui_link("edit_port.cgi?new=1&zone=".&urlize($zone->{'name'}),
$text{'index_padd'}),
&ui_link("edit_serv.cgi?new=1&zone=".&urlize($zone->{'name'}),
$text{'index_sadd'}) );
if (@{$zone->{'services'}} || @{$zone->{'ports'}}) {
my @tds = ( "width=5" );
unshift(@links, &select_all_link("d", 1),
&select_invert_link("d", 1));
print &ui_form_start("delete_rules.cgi", "post");
print &ui_hidden("zone", $zone->{'name'});
print &ui_links_row(\@links);
print &ui_columns_start([ "", $text{'index_type'}, $text{'index_port'},
$text{'index_proto'} ], 100, 0, \@tds);
foreach my $s (@{$zone->{'services'}}) {
my $url = "edit_serv.cgi?id=".&urlize($s).
"&zone=".&urlize($zone->{'name'});
print &ui_checked_columns_row([
&ui_link($url, $text{'index_tservice'}),
&ui_link($url, $s),
"",
], \@tds, "d", "service/".$s);
}
foreach my $p (@{$zone->{'ports'}}) {
my $url = "edit_port.cgi?id=".&urlize($p).
"&zone=".&urlize($zone->{'name'});
my ($port, $proto) = split(/\//, $p);
print &ui_checked_columns_row([
&ui_link($url, $text{'index_tport'}),
&ui_link($url, $port),
&ui_link($url, uc($proto)),
], \@tds, "d", "port/".$p);
}
print &ui_columns_end();
print &ui_links_row(\@links);
print &ui_form_end([ [ undef, $text{'index_delete'} ] ]);
}
else {
print "<b>$text{'index_none'}</b> <p>\n";
print &ui_links_row(\@links);
}
# Show interfaces for this zone
print &ui_form_start("save_ifaces.cgi");
print &ui_hidden("zone", $zone->{'name'});
print "<b>$text{'index_ifaces'}</b>\n";
my %zifcs = map { $_, 1 } &unique(@{$azone->{'interfaces'}},
@{$zone->{'interfaces'}});
foreach my $i (&list_system_interfaces()) {
print &ui_checkbox("iface", $i, $i, $zifcs{$i}),"\n";
}
print &ui_submit($text{'save'});
print &ui_form_end();
# Show start/apply buttons
print &ui_hr();
print &ui_buttons_start();
my $ok = &is_firewalld_running();
if ($ok) {
print &ui_buttons_row("restart.cgi", $text{'index_restart'},
$text{'index_restartdesc'},
[ [ "zone", $zone->{'name'} ] ]);
print &ui_buttons_row("stop.cgi", $text{'index_stop'},
$text{'index_stopdesc'},
[ [ "zone", $zone->{'name'} ] ]);
}
else {
print &ui_buttons_row("start.cgi", $text{'index_start'},
$text{'index_startdesc'},
[ [ "zone", $zone->{'name'} ] ]);
}
# Enable at boot
&foreign_require("init");
my $st = &init::action_status($config{'init_name'});
if ($st) {
my $atboot = $st == 2 ? 1 : 0;
print &ui_buttons_row("bootup.cgi", $text{'index_bootup'},
$text{'index_bootupdesc'},
[ [ "zone", $zone->{'name'} ] ],
&ui_yesno_radio("boot", $atboot));
}
print &ui_buttons_end();
&ui_print_footer("/", $text{'index'});

20
firewalld/install_check.pl Executable file
View File

@@ -0,0 +1,20 @@
# install_check.pl
use strict;
use warnings;
do 'firewalld-lib.pl';
# is_installed(mode)
# For mode 1, returns 2 if the server is installed and configured for use by
# Webmin, 1 if installed but not configured, or 0 otherwise.
# For mode 0, returns 1 if installed, 0 if not
sub is_installed
{
my ($mode) = @_;
return 0 if (&check_firewalld());
if ($mode) {
return &is_firewalld_running() ? 2 : 1;
}
return 1;
}

86
firewalld/lang/de Normal file
View File

@@ -0,0 +1,86 @@
check_ecmd=Der FirewallD Steuer-Befehl $1 wurde auf Ihrem System nicht gefunden
delete_edel=Entfernen von $1 fehlgeschlagen : $2
delete_enone=Nichts ausgew&#228;hlt!
delete_err=Fehlgeschlagen Regel zu l&#246;schen
delzone_edefault=Die Standardzone kann nicht entfernt werden
delzone_err=Fehlgeschlagen Zone zu l&#246;schen
delzone_rusure=Sind Sie sich sicher die Zone $1, welche $2 Ports und $3 Dienste enth&#228;lt, zu l&#246;schen?
delzone_title=L&#246;sche Zone
index_apply=Konfiguration anwenden
index_applydesc=Klicken auf diese Schaltfl&#228;che, um die Firewall-Konfiguration, welche oben aufgef&#252;hrt ist, aktiv zu stellen. Alle Firewall-Regeln, welche derzeit aktiv sind, werden verworfen und ersetzt
index_atboot=Aktiviere firewall beim Booten?
index_bootup=Aktiviere beim Booten
index_bootupdesc=&#196;ndere diese Option, um zu kontrollieren, ob Ihre Firewall beim Systemstart aktiviert wird oder nicht.
index_cerr=Das FirewallD Module kann nicht benutzt werden : $1
index_delete=L&#246;sche ausgew&#228;hlte Regeln
index_ezones=Keine FirewallD Zonen gefunden!
index_ifaces=Wende Regeln an Schnittstelle an:
index_none=Diese Zone hat bisher keine erlaubten Ports oder Dienste.
index_padd=F&#252;ge erlaubten Port hinzu.
index_port=Port oder Dienst
index_proto=Protokoll
index_restart=Konfiguration anwenden
index_restartdesc=Aktiviert alle erlaubten Dienste und Ports, die oben aufgef&#252;hrt sind, in allen Zonen. Alle aktiven Regeln, die nicht dauerhaft erstellt wurden, werden ersetzt.
index_return=Liste an Zonen
index_sadd=F&#252;ge erlaubten Dienst hinzu.
index_start=Starte FirewallD
index_startdesc=Starte den FirewallD Server und wende alle oben aufgef&#252;hrten Regeln an.
index_stop=Stoppe FirewallD
index_stopdesc=Fahre den FirewallD Server herunter und entferne alle oben aufgef&#252;hrten Regeln.
index_title=FirewallD
index_tport=Port
index_tservice=Dienst
index_type=Regel-Typ
index_zone=Zeige Regel in Zone:
index_zoneadd=F&#252;ge Zone hinzu..
index_zonedel=L&#246;sche Zone
index_zoneok=&#196;ndern
log_bootdown=FirewallD beim Booten deaktiviert
log_bootup=FirewallD beim Booten aktiviert
log_create_port=Erlaubter Port $1 hinzugef&#252;gt
log_create_serv=Erlaubter Dienst $1 hinzugef&#252;gt
log_create_zone=Zone $1 erstellt
log_delete_port=Erlaubter Dienst $1 gel&#246;scht
log_delete_rules=$1 erlaubte Ports gel&#246;scht
log_delete_serv=Erlaubter Dienst $1 gel&#246;scht
log_delete_zone=Zone $1 gel&#246;scht
log_ifaces_zone=Schnittstelle f&#252;r Zone $1 aktualisiert
log_restart=FirewallD Konfiguration angewendet
log_start=FirewallD gestartet
log_stop=FirewallD gestoppt
log_update_port=Erlaubten Port $1 aktualisiert
log_update_serv=Erlaubten Dienst $1 aktualisiert
port_create=F&#252;ge erlaubten Port hinzu
port_edit=Editiere erlaubten Port
port_eport=Fehlender oder ung&#252;ltiger Portnummer oder Name
port_eporthigh=Hoher Port muss eine Zahl sein
port_eportlow=Niedriger Port muss eine Zahl sein
port_eportrange=Niedriger Port muss unter dem hohen Port liegen
port_err=Fehlgeschlagen Port zu speichern
port_ezone=Zone existiert nicht!
port_header=Erlaubten Port Optionen
port_mode0=Einzelner Port
port_mode1=Port-Bereich
port_port=Port zu erlauben
port_proto=Netzwerkprotokoll
port_zone=Erlaubt in Zone
restart_err=Fehlgeschlagen Konfiguration anzuwenden
serv_create=F&#252;ge Dienst hinzu
serv_edit=Editiere Dienst
serv_err=Fehlgeschlagen Dienst zu speichern
serv_header=Erlaubte Dienste Optionen
serv_name=Dienste zu erlauben
start_err=Fehlgeschlagen FirewallD zu starten
stop_err=Fehlgeschlagen FirewallD zu stoppen
zone_eclash=Eine Zone mit dem gleichen Namen ist bereits vorhanden
zone_ename=Fehlender oder ung&#252;ltiger Zonen-Name
zone_err=Fehlgeschlagen Zonen zu erstellen
zone_header=Neue Zonen Optionen
zone_mode=Erlaubte Ports und Dienste
zone_mode0=Keine (gesamter Traffic wird blockiert)
zone_mode1=Kopiere von ZOne
zone_mode2=nur SSH, IDENT und Webmin
zone_mode3=SSH, IDENT, Webmin und hohe Ports
zone_mode4=Port, welche f&#252;r das virtuelle Hosting verwendet werden
zone_name=Zonen-Namen
zone_title=Erstelle Zone

98
firewalld/lang/en Normal file
View File

@@ -0,0 +1,98 @@
index_title=FirewallD
index_atboot=Enable firewall at boot time?
index_bootup=Activate at boot
index_bootupdesc=Change this option to control whether your firewall is activated at boot time or not.
index_apply=Apply Configuration
index_applydesc=Click this button to make the firewall configuration listed above active. Any firewall rules currently in effect will be flushed and replaced
index_restart=Apply Configuration
index_restartdesc=Activate all the allowed services and ports listed above, in all zones. Any active rules that were not permanently created will be replaced.
index_start=Start FirewallD
index_startdesc=Start the FirewallD server and apply the rules listed above.
index_stop=Stop FirewallD
index_stopdesc=Shut down the FirewallD server and remove all the rules listed above.
index_cerr=The FirewallD module cannot be used : $1
index_zone=Show rules in zone:
index_zoneok=Change
index_zoneadd=Add Zone..
index_zonedel=Delete Zone
index_zonedef=Make Default
index_type=Rule type
index_port=Port or service
index_proto=Protocol
index_tservice=Service
index_tport=Port
index_padd=Add allowed port.
index_sadd=Add allowed service.
index_delete=Delete Selected Rules
index_return=list of zones
index_ezones=No FirewallD zones found!
index_none=This zone does not have any allowed ports or services yet.
index_ifaces=Apply rules to interfaces:
port_edit=Edit Port
port_create=Add Port
port_header=Allowed port options
port_zone=Allowed in zone
port_port=Port to allow
port_mode0=Single port
port_mode1=Port range
port_proto=Network protocol
port_ezone=Zone does not exist!
port_err=Failed to save port
port_eport=Missing or invalid port number or name
port_eportlow=Low port must be a number
port_eporthigh=High port must be a number
port_eportrange=Low port must be below the high port
serv_edit=Edit Service
serv_create=Add Service
serv_header=Allowed service options
serv_name=Service to allow
serv_err=Failed to save service
check_ecmd=The FirewallD control command $1 was not found on your system
delete_err=Failed to delete rules
delete_enone=None selected!
delete_edel=Removal of $1 failed : $2
zone_title=Create Zone
zone_header=New zone options
zone_name=Zone name
zone_mode=Allowed ports and services
zone_mode0=None (all traffic will be blocked)
zone_mode1=Copy from zone
zone_mode2=SSH, IDENT and Webmin only
zone_mode3=SSH, IDENT, Webmin and high ports
zone_mode4=Ports used for virtual hosting
zone_err=Failed to create zone
zone_ename=Missing or invalid zone name
zone_eclash=A zone with the same name already exists
delzone_title=Delete Zone
delzone_err=Failed to delete zone
delzone_edefault=The default zone cannot be removed
delzone_rusure=Are you sure you want to delete the zone $1, which contains $2 ports and $3 services?
defzone_err=Failed to make zone the default
restart_err=Failed to apply configuration
stop_err=Failed to stop FirewallD
start_err=Failed to start FirewallD
log_stop=Stopped FirewallD
log_start=Started FirewallD
log_restart=Applied FirewallD configuration
log_bootup=Enabled FirewallD at boot
log_bootdown=Disabled FirewallD at boot
log_create_port=Added allowed port $1
log_delete_port=Removed allowed port $1
log_update_port=Updated allowed port $1
log_create_serv=Added allowed service $1
log_delete_serv=Removed allowed service $1
log_update_serv=Updated allowed service $1
log_delete_rules=Removed $1 allowed ports
log_ifaces_zone=Updated interfaces for zone $1
log_create_zone=Created zone $1
log_delete_zone=Deleted zone $1
log_default_zone=Made zone $1 the default

29
firewalld/log_parser.pl Executable file
View File

@@ -0,0 +1,29 @@
# log_parser.pl
# Functions for parsing this module's logs
use strict;
use warnings;
do 'firewalld-lib.pl';
our (%text);
# parse_webmin_log(user, script, action, type, object, &params)
# Converts logged information from this module into human-readable form
sub parse_webmin_log
{
my ($user, $script, $action, $type, $object, $p) = @_;
if ($type eq "port" || $type eq "serv") {
return &text("log_${action}_${type}",
"<tt>".&html_escape($object)."</tt>");
}
elsif ($type eq "rules") {
return &text("log_${action}_${type}", &html_escape($object));
}
elsif ($type eq "zone") {
return &text("log_${action}_${type}",
"<tt>".&html_escape($object)."</tt>");
}
else {
return $text{"log_${action}"};
}
}

7
firewalld/module.info Normal file
View File

@@ -0,0 +1,7 @@
desc=FirewallD
os_support=*-linux
depends=net init
category=net
desc_de=FirewallD
longdesc=Configure a Linux firewall using FirewallD, by editing allowed services and ports.
longdesc_de=Konfiguriert eine Linux-Firewall mit FirewallD, indem es erlaubte Dienste und Ports editiert.

107
firewalld/open-ports.pl Executable file
View File

@@ -0,0 +1,107 @@
#!/usr/local/bin/perl
# Open some ports on the firewall. Exit statuses are :
# 0 - Nothing needed to be done
# 1 - Given ports were opened up
# 2 - IPtables is not installed or supported
# 3 - No firewall is active
# 4 - Could not apply configuration
# 5 - Bad args
use strict;
use warnings;
our ($module_name, $no_acl_check);
$no_acl_check++;
$ENV{'WEBMIN_CONFIG'} = "/etc/webmin";
$ENV{'WEBMIN_VAR'} = "/var/webmin";
if ($0 =~ /^(.*\/)[^\/]+$/) {
chdir($1);
}
require './firewalld-lib.pl';
if ($module_name ne 'firewalld') {
print STDERR "Command must be run with full path\n";
exit(5);
}
# Parse args
my $no_apply = 0;
if ($ARGV[0] eq "--no-apply") {
$no_apply = 1;
shift(@ARGV);
}
if (!@ARGV) {
print STDERR "Missing ports to open\n";
exit(5);
}
foreach my $p (@ARGV) {
if ($p !~ /^\d+$/ && $p !~ /^\d+:\d+$/ && $p !~ /^\d+(,\d+)*$/) {
print STDERR "Port $p must be number or start:end range\n";
exit(5);
}
}
# Check Firewalld support
if (&foreign_installed($module_name, 1) != 2) {
print STDERR "Firewalld is not available\n";
exit(2);
}
if (!&is_firewalld_running()) {
print STDERR "Firewalld is not running\n";
exit(2);
}
# Check if any zones are active
my @azones = &list_firewalld_zones(1);
if (!@azones) {
print STDERR "No active FirewallD zones found\n";
exit(3);
}
# Get the default zone
my @zones = &list_firewalld_zones();
my ($zone) = grep { $_->{'default'} } @zones;
if (!$zone) {
print STDERR "Default FirewallD zone not found\n";
exit(3);
}
my @added = ( );
foreach my $p (@ARGV) {
# For each port, find existing rules
$p =~ s/^(\d+):(\d+)/$1-$2/;
print STDERR "Checking for port $p ..\n";
if (&indexof($p."/tcp", @{$zone->{'ports'}}) >= 0) {
print STDERR ".. already allowed\n";
}
else {
# Need to add
my $err = &create_firewalld_port($zone, $p, "tcp");
if ($err) {
print STDERR ".. failed : $err\n";
}
else {
push(@added, $p);
}
}
}
if (@added) {
# Added some ports - apply them
print STDERR "Opened ports ",join(" ", @added),"\n";
my $ex = 1;
if (!$no_apply) {
my $err = &apply_firewalld();
if ($err) {
print "Failed to apply configuration : $err\n";
$ex = 4;
}
else {
print "Applied configuration successfully\n";
}
}
&webmin_log("openports", undef, undef, { 'ports' => \@added });
exit($ex);
}
else {
print STDERR "All ports are already open\n";
exit(0);
}

12
firewalld/restart.cgi Normal file
View File

@@ -0,0 +1,12 @@
#!/usr/local/bin/perl
# Activate all saved firewalld rules
use strict;
use warnings;
require './firewalld-lib.pl';
our (%text, %in);
&error_setup($text{'restart_err'});
my $err = &apply_firewalld();
&error($err) if ($err);
&webmin_log("restart");
&redirect("index.cgi?zone=".&urlize($in{'zone'}));

21
firewalld/save_ifaces.cgi Normal file
View File

@@ -0,0 +1,21 @@
#!/usr/local/bin/perl
# Update interface ports
use strict;
use warnings;
require 'firewalld-lib.pl';
our (%in, %text);
&error_setup($text{'ifaces_err'});
&ReadParse();
# Get the zone
my @zones = &list_firewalld_zones();
my ($zone) = grep { $_->{'name'} eq $in{'zone'} } @zones;
$zone || &error($text{'port_ezone'});
# Update the interfaces list
my $err = &update_zone_interfaces($zone, [ split(/\0/, $in{'iface'}) ]);
&error($err) if ($err);
&webmin_log("ifaces", "zone", $zone->{'name'});
&redirect("index.cgi?zone=".&urlize($zone->{'name'}));

61
firewalld/save_port.cgi Normal file
View File

@@ -0,0 +1,61 @@
#!/usr/local/bin/perl
# Create, update or delete a port
use strict;
use warnings;
require 'firewalld-lib.pl';
our (%in, %text);
&error_setup($text{'port_err'});
&ReadParse();
# Get the zone and rule
my @zones = &list_firewalld_zones();
my ($zone) = grep { $_->{'name'} eq $in{'zone'} } @zones;
$zone || &error($text{'port_ezone'});
my ($oldport, $oldproto);
if ($in{'id'}) {
($oldport, $oldproto) = split(/\//, $in{'id'});
}
my $logport;
if ($in{'delete'}) {
# Just remove the existing rule
my $err = &delete_firewalld_port($zone, $oldport, $oldproto);
&error($err) if ($err);
$logport = $oldport;
}
else {
# Validate inputs
my $port;
if ($in{'mode'} == 0) {
$in{'port'} =~ /^\d+$/ &&
$in{'port'} > 0 && $in{'port'} < 65536 ||
getservbyname($in{'port'}, $in{'proto'}) ||
&error($text{'port_eport'});
$port = $in{'port'};
}
else {
$in{'portlow'} =~ /^\d+$/ &&
$in{'portlow'} > 0 && $in{'portlow'} < 65536 ||
&error($text{'port_eportlow'});
$in{'porthigh'} =~ /^\d+$/ &&
$in{'porthigh'} > 0 && $in{'porthigh'} < 65536 ||
&error($text{'port_eporthigh'});
$in{'portlow'} < $in{'porthigh'} ||
&error($text{'port_eportrange'});
$port = $in{'portlow'}."-".$in{'porthigh'};
}
my $proto = $in{'proto'};
# Create or update allowed port
if (!$in{'new'}) {
my $err = &delete_firewalld_port($zone, $oldport, $oldproto);
&error($err) if ($err);
}
my $err = &create_firewalld_port($zone, $port, $proto);
&error($err) if ($err);
$logport = $port;
}
&webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'update',
'port', $logport);
&redirect("index.cgi?zone=".&urlize($zone->{'name'}));

42
firewalld/save_serv.cgi Normal file
View File

@@ -0,0 +1,42 @@
#!/usr/local/bin/perl
# Create, update or delete a service
use strict;
use warnings;
require 'firewalld-lib.pl';
our (%in, %text);
&error_setup($text{'serv_err'});
&ReadParse();
# Get the zone and rule
my @zones = &list_firewalld_zones();
my ($zone) = grep { $_->{'name'} eq $in{'zone'} } @zones;
$zone || &error($text{'port_ezone'});
my $oldserv;
if ($in{'id'}) {
$oldserv = $in{'id'};
}
my $logserv;
if ($in{'delete'}) {
# Just remove the existing rule
my $err = &delete_firewalld_service($zone, $oldserv);
&error($err) if ($err);
$logserv = $oldserv;
}
else {
# Validate inputs
my $serv = $in{'serv'};
# Create or update allowed port
if (!$in{'new'}) {
my $err = &delete_firewalld_service($zone, $oldserv);
&error($err) if ($err);
}
my $err = &create_firewalld_service($zone, $serv);
&error($err) if ($err);
$logserv = $serv;
}
&webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'update',
'serv', $logserv);
&redirect("index.cgi?zone=".&urlize($zone->{'name'}));

12
firewalld/start.cgi Normal file
View File

@@ -0,0 +1,12 @@
#!/usr/local/bin/perl
# Start up firewalld
use strict;
use warnings;
require './firewalld-lib.pl';
our (%text, %in);
&error_setup($text{'start_err'});
my $err = &start_firewalld();
&error($err) if ($err);
&webmin_log("start");
&redirect("index.cgi?zone=".&urlize($in{'zone'}));

12
firewalld/stop.cgi Normal file
View File

@@ -0,0 +1,12 @@
#!/usr/local/bin/perl
# Shut down firewalld
use strict;
use warnings;
require './firewalld-lib.pl';
our (%text, %in);
&error_setup($text{'stop_err'});
my $err = &stop_firewalld();
&error($err) if ($err);
&webmin_log("stop");
&redirect("index.cgi?zone=".&urlize($in{'zone'}));

33
firewalld/zone_form.cgi Normal file
View File

@@ -0,0 +1,33 @@
#!/usr/local/bin/perl
# Show a form for creating a new zone, with some default rules
use strict;
use warnings;
require 'firewalld-lib.pl';
our (%text, %in);
&ReadParse();
&ui_print_header(undef, $text{'zone_title'}, "");
print &ui_form_start("create_zone.cgi", "post");
print &ui_table_start($text{'zone_header'}, undef, 2);
# New zone name
print &ui_table_row($text{'zone_name'},
&ui_textbox("name", undef, 20));
# Initial ruleset
print &ui_table_row($text{'zone_mode'},
&ui_radio_table("mode", 0,
[ [ 0, $text{'zone_mode0'} ],
[ 1, $text{'zone_mode1'},
&ui_select("source", $in{'zone'},
[ map { $_->{'name'} } &list_firewalld_zones() ]) ],
[ 2, $text{'zone_mode2'} ],
[ 3, $text{'zone_mode3'} ],
[ 4, $text{'zone_mode4'} ] ]));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'create'} ] ]);
&ui_print_footer("index.cgi?zone=".&urlize($in{'zone'}),
$text{'index_return'});

View File

@@ -1,7 +1,6 @@
desc=Frox FTP Proxy
category=servers
os_support=*-linux freebsd
longdesc=Configure Frox, a transparent proxy for FTP clients.
desc_de=Frox FTP-Proxyserver
desc_ca=Proxy FTP Frox
desc_es=Frox - Proxy FTP
@@ -10,4 +9,3 @@ desc_nl=Frox FTP Proxy-server
desc_cz.UTF-8=Frox FTP-Proxy server
desc_no=Frox FTP proxy tjener
desc_ms_MY=Proksi FTP Frox
longdesc_ms_MY=Mengkonfigurasi Frox, proksi telus untuk klien FTP.

View File

@@ -2,9 +2,8 @@
Això pot ser o bé el camí d'un fitxer al qual s'escriurà la còpia, o bé
el camí d'una unitat de cinta (com ara <tt>/dev/st0</tt>), o un fitxer o
dispositiu d'un host remot. Per tal que les còpies a un host remot funcionin,
aquest ha de suportar el protocol <tt>rsh</tt>, que normalment no està
activat per raons de seguretat. <p>
dispositiu d'un host remot. Les còpies contra un host es fan via el protocol SSH,
o bé opcionalment via l'antic protocol RSH, més insegur. <p>
<hr>

View File

@@ -2,9 +2,8 @@
This can either be the path to a file to which the backup will be written,
the path to a tape drive device (like <tt>/dev/st0</tt>), or a file or device
on a remote host. For backups to a remote host to work, it must support the
<tt>rsh</tt> protocol, which is not usually turned on by default for security
reasons. <p>
on a remote host. Backups to a remote system are done via the SSH protocol,
or optionally the older insecure RSH protocol. <p>
<hr>

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