mirror of
https://github.com/webmin/webmin.git
synced 2026-02-05 15:12:15 +00:00
Compare commits
319 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3430c74fe2 | ||
|
|
16949927d6 | ||
|
|
a8cf0a8e78 | ||
|
|
3d5802bcaf | ||
|
|
fa3a61c5a7 | ||
|
|
5d55867393 | ||
|
|
81f657fa15 | ||
|
|
41b8d4da9a | ||
|
|
450264d182 | ||
|
|
be4da986ec | ||
|
|
98c2a76499 | ||
|
|
f1e2287b3a | ||
|
|
dfdacb3a26 | ||
|
|
9924f44c05 | ||
|
|
d055e86901 | ||
|
|
d9d94fd394 | ||
|
|
d35cffade9 | ||
|
|
cd6939bf8a | ||
|
|
5672b61358 | ||
|
|
8b564f10e3 | ||
|
|
39b80ee1ec | ||
|
|
7e1b9071e1 | ||
|
|
7930a03763 | ||
|
|
ae23abc827 | ||
|
|
f71283ae40 | ||
|
|
0832cd40a1 | ||
|
|
aa4532ff1b | ||
|
|
adecd320f5 | ||
|
|
8ec0c144d2 | ||
|
|
b2620accf8 | ||
|
|
f2d77a7bee | ||
|
|
f4bb5a843a | ||
|
|
5090c85338 | ||
|
|
f145fb02cf | ||
|
|
cdc89c352a | ||
|
|
4c537d0fd8 | ||
|
|
95a4c2c956 | ||
|
|
1a4d536351 | ||
|
|
4e4f82713e | ||
|
|
6434f896dc | ||
|
|
4a3dfb308b | ||
|
|
cb2eb0c95d | ||
|
|
b134e9e0d7 | ||
|
|
28b90e1b37 | ||
|
|
e9c0383a3c | ||
|
|
1118c2bb2f | ||
|
|
caea0eee60 | ||
|
|
573d39e146 | ||
|
|
3c41e0e816 | ||
|
|
eb950ff47d | ||
|
|
c9bde07cfd | ||
|
|
44a1b68426 | ||
|
|
d0ebb3783e | ||
|
|
f8a9353408 | ||
|
|
0eae027dbc | ||
|
|
278ec5cd76 | ||
|
|
a6a20642fb | ||
|
|
7efe201a27 | ||
|
|
39bb0a681c | ||
|
|
2d896443eb | ||
|
|
a6d1f74f1f | ||
|
|
8ab1cc4abc | ||
|
|
269bc80ec3 | ||
|
|
9871556169 | ||
|
|
e3ef1b9fce | ||
|
|
ad9bc2701d | ||
|
|
2468ea1001 | ||
|
|
cef1b1332a | ||
|
|
ed11ba25c6 | ||
|
|
efae515c1f | ||
|
|
a4412fcbe8 | ||
|
|
eba13b74c9 | ||
|
|
3548188c38 | ||
|
|
36968f5362 | ||
|
|
2b77e8f020 | ||
|
|
700b4f696e | ||
|
|
bb24d89ddb | ||
|
|
f0c0efb411 | ||
|
|
ea7d904d90 | ||
|
|
deed37b482 | ||
|
|
5cd13920a8 | ||
|
|
8227e56084 | ||
|
|
57efdd9a28 | ||
|
|
b36d0f955c | ||
|
|
5e5f6cd916 | ||
|
|
4e81ecb659 | ||
|
|
88679cff5a | ||
|
|
a6901947c2 | ||
|
|
8912154c0b | ||
|
|
6b34d179bb | ||
|
|
bb2f091a17 | ||
|
|
dfd337009f | ||
|
|
554cba6eba | ||
|
|
9d3e0e85ba | ||
|
|
7d670cc449 | ||
|
|
0cc0a893a2 | ||
|
|
b7190b1927 | ||
|
|
68890d8f2b | ||
|
|
03f4c9fd56 | ||
|
|
c813b1c068 | ||
|
|
aafb66e45c | ||
|
|
8f0d32b764 | ||
|
|
62bf3b6cd4 | ||
|
|
58a454dc23 | ||
|
|
5a74498b87 | ||
|
|
ac238e37d1 | ||
|
|
9e4269ebae | ||
|
|
dfb0db593d | ||
|
|
79e2bf69b4 | ||
|
|
c153fae3d8 | ||
|
|
c1105d0ac5 | ||
|
|
fdffa9ee42 | ||
|
|
cb008888bf | ||
|
|
86ce05ec3b | ||
|
|
a42fbc5bd0 | ||
|
|
441b9f1502 | ||
|
|
1e0100b424 | ||
|
|
288a377e71 | ||
|
|
12e2aecbda | ||
|
|
2d83ca6cdf | ||
|
|
f498f36bef | ||
|
|
2eb957fc04 | ||
|
|
9cff0de208 | ||
|
|
4b2ba48e58 | ||
|
|
d47ee41c32 | ||
|
|
22f3d49e5c | ||
|
|
a10dd02a49 | ||
|
|
52196635a3 | ||
|
|
59efd239ea | ||
|
|
1a1deef64a | ||
|
|
132ea695bc | ||
|
|
743d0d59ad | ||
|
|
7162dbaa8e | ||
|
|
c378e60ec7 | ||
|
|
9612e05536 | ||
|
|
f38442bbae | ||
|
|
cf0ddafbe0 | ||
|
|
1727c9917d | ||
|
|
18d16d7639 | ||
|
|
3d20f8c56e | ||
|
|
d4264be5fd | ||
|
|
6d553a10ad | ||
|
|
5f4180cf13 | ||
|
|
4aedfdb006 | ||
|
|
a3658ff653 | ||
|
|
d040242a7e | ||
|
|
019e5e15e6 | ||
|
|
2a8797c49c | ||
|
|
ab1095e529 | ||
|
|
30168f57bb | ||
|
|
0a2eb1d520 | ||
|
|
ec4f05ec5f | ||
|
|
7a9b4d0b2b | ||
|
|
b7b6624ee8 | ||
|
|
f455c24054 | ||
|
|
ee94c220da | ||
|
|
615f97f47e | ||
|
|
1ef26769b6 | ||
|
|
04ed6406e7 | ||
|
|
882dcb7384 | ||
|
|
f29f13f817 | ||
|
|
0a8abc529b | ||
|
|
72e2faa5b6 | ||
|
|
8291e1c98d | ||
|
|
df3fa20d6f | ||
|
|
4f532659b3 | ||
|
|
e1f086944d | ||
|
|
a13bce59e3 | ||
|
|
ad46361cb0 | ||
|
|
fd5f09a816 | ||
|
|
c38570cb9d | ||
|
|
324732d948 | ||
|
|
78c5892c6a | ||
|
|
a1e74e6659 | ||
|
|
4caa56aa80 | ||
|
|
95c494d9fc | ||
|
|
2dd92dc2b7 | ||
|
|
f5580c4046 | ||
|
|
cefecfb173 | ||
|
|
181d92ff48 | ||
|
|
d27a31e2d6 | ||
|
|
c07bd9ca04 | ||
|
|
ce5a1484fe | ||
|
|
22cb340cb3 | ||
|
|
f27cad3665 | ||
|
|
701795dc51 | ||
|
|
1cf1cf12f4 | ||
|
|
6790c03792 | ||
|
|
8f38cdac33 | ||
|
|
3a833870ff | ||
|
|
723e5fd0ad | ||
|
|
63132ded2a | ||
|
|
968456b408 | ||
|
|
3f53a503db | ||
|
|
31ad58fda8 | ||
|
|
005873dcd9 | ||
|
|
18fdc2a9ba | ||
|
|
e11ef0ed93 | ||
|
|
b33a605699 | ||
|
|
bab827542b | ||
|
|
ea838d0500 | ||
|
|
975e7ad13f | ||
|
|
34e9b20324 | ||
|
|
7d42268b80 | ||
|
|
64d1e8f4b4 | ||
|
|
d40b907ad2 | ||
|
|
e30670bb2e | ||
|
|
3115b17fa1 | ||
|
|
d3242017bc | ||
|
|
aeb98e9d77 | ||
|
|
118f705eb4 | ||
|
|
f302357943 | ||
|
|
a81c833462 | ||
|
|
d5f2981d02 | ||
|
|
8ed9a84180 | ||
|
|
14af860ed5 | ||
|
|
dbd29ec126 | ||
|
|
3fcb565086 | ||
|
|
c7789ce801 | ||
|
|
79d3d04fc3 | ||
|
|
ad5a6c9688 | ||
|
|
80a428e0e6 | ||
|
|
45cd9cf322 | ||
|
|
7fd6e5f0ef | ||
|
|
cf091c95e1 | ||
|
|
959b355848 | ||
|
|
baf5d23a6f | ||
|
|
ec1353a720 | ||
|
|
9938636224 | ||
|
|
ac8634bf75 | ||
|
|
5a8ae25d02 | ||
|
|
990e75724d | ||
|
|
8099d2b045 | ||
|
|
0ffdd6c842 | ||
|
|
61f55a1343 | ||
|
|
8297c3d42f | ||
|
|
c5c8f0d05f | ||
|
|
a71bf42232 | ||
|
|
6e873a172a | ||
|
|
e4766eb2ba | ||
|
|
1c2bdf0f0c | ||
|
|
aef1cbbeab | ||
|
|
dc9cb83946 | ||
|
|
288c05d8f1 | ||
|
|
2f34f1412d | ||
|
|
99e1eda954 | ||
|
|
bae3f5e77b | ||
|
|
ada457ed56 | ||
|
|
f9a2d37e08 | ||
|
|
c30ca90170 | ||
|
|
ceb1a57dd8 | ||
|
|
cbeaed860b | ||
|
|
9054e37d3a | ||
|
|
1925ba53c4 | ||
|
|
998407be9a | ||
|
|
416ae2b62f | ||
|
|
1c38031703 | ||
|
|
6d5f109068 | ||
|
|
d05c0c70f4 | ||
|
|
14d8e45d4f | ||
|
|
75518c5227 | ||
|
|
6b1a006ca1 | ||
|
|
5e68b937d7 | ||
|
|
d65ff9a623 | ||
|
|
a116a5e10f | ||
|
|
889d7d2ea0 | ||
|
|
754248f6af | ||
|
|
f3fba12703 | ||
|
|
a71f333ff0 | ||
|
|
8c80095878 | ||
|
|
dad6a7c3e9 | ||
|
|
50991313bf | ||
|
|
6b4ec5b3f0 | ||
|
|
88b73eaea4 | ||
|
|
e263e49912 | ||
|
|
f8dfa52d92 | ||
|
|
73cc25e127 | ||
|
|
07e9a01919 | ||
|
|
04cc026a61 | ||
|
|
17c63ef178 | ||
|
|
51ca560718 | ||
|
|
2c363c3238 | ||
|
|
12735f1c54 | ||
|
|
a87593651f | ||
|
|
5f54caa5a9 | ||
|
|
89897579f5 | ||
|
|
3d18a1b9fd | ||
|
|
b8073652fd | ||
|
|
6cf9f5243c | ||
|
|
5ea42f455e | ||
|
|
34d891545e | ||
|
|
0ef822606b | ||
|
|
69185c1df3 | ||
|
|
64468f1afa | ||
|
|
84bb9e4d22 | ||
|
|
3e1cf3c298 | ||
|
|
43039ddc43 | ||
|
|
5e2c23e0c2 | ||
|
|
fd6b3b3529 | ||
|
|
c8f8f55f1b | ||
|
|
39bf55a410 | ||
|
|
807de6e9ce | ||
|
|
6a30643822 | ||
|
|
9d84a6fdca | ||
|
|
c8b4672cc8 | ||
|
|
65ee16aad9 | ||
|
|
fe4758b8eb | ||
|
|
49e05cbdfe | ||
|
|
8d9a68461d | ||
|
|
3037f233ac | ||
|
|
852b8d7576 | ||
|
|
4d0befa26f | ||
|
|
d39b7875e9 | ||
|
|
5b8308c011 | ||
|
|
c48e9412e2 | ||
|
|
4f1226697e | ||
|
|
fb66b43c67 | ||
|
|
e3bbfdda7c | ||
|
|
b7eb16fe3a |
14
CHANGELOG
14
CHANGELOG
@@ -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
2
README
@@ -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
|
||||
|
||||
@@ -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'});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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=<Enhver>
|
||||
core_realm=Navn for autentiseringsområde
|
||||
core_resp=Svar
|
||||
core_rtout=Tidsavbrudd for forespørsel
|
||||
@@ -341,6 +343,7 @@ cvirt_eport='$1' er ikke en gyldig port
|
||||
cvirt_eroot1=Du må oppgi dokumentrot
|
||||
cvirt_eroot2=Kunne ikke opprette katalog '$1' : $2
|
||||
cvirt_eroot3=Du har ikke tilgang til å 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
1001
apache/lang/ru.UTF-8
Normal file
File diff suppressed because it is too large
Load Diff
1883
apache/lang/ru_SU
1883
apache/lang/ru_SU
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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...
|
||||
|
||||
@@ -43,6 +43,7 @@ edit_mods=Module zum Sichern
|
||||
edit_mods2=Module zum Zurückschreiben
|
||||
edit_nofiles=Server-Konfigurationsdateien
|
||||
edit_other=Andere ausgewä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ählt
|
||||
restore_err=Wiederherstellung gescheitert!
|
||||
restore_failed=.. gescheitert! $1
|
||||
restore_testing=Extrahiere Inhalt von Backup von $1 ..
|
||||
|
||||
@@ -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 ..
|
||||
|
||||
@@ -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 å 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ø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 ..
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -371,35 +371,57 @@ log_delete_pool=Volume-Pool $1 gelöscht
|
||||
log_delete_pools=$1 Volume-Pools gelöscht
|
||||
log_delete_schedule=Backup-Zeitplan $1 gelöscht
|
||||
log_delete_schedules=$1 Backup-Zeitplan gelöscht
|
||||
log_delete_sdirector=Speicher-Daemon-Direktor $1 gelöscht
|
||||
log_delete_sdirectors=$1 Speicher-Daemon-Direktoren gelöscht
|
||||
log_delete_storage=Storage Daemon $1 gelöscht
|
||||
log_delete_storages=$1 Storage Daemons gelö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ä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ändert
|
||||
log_modify_sdirector=Speicher-Daemon-Direktor $1 modifiziert
|
||||
log_modify_storage=Speicher-Daemon $1 modifiziert
|
||||
log_mount=Speicher-Gerä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ät $1 unmounted
|
||||
mount_done=.. erfolgreicht gemountet.
|
||||
mount_err=Fehlgeschlagen Speicher-Gerät zu mounten
|
||||
mount_eslot=Fehlende oder ungültige Slot Nummer
|
||||
mount_failed=.. mounten fehlgeschlagen! Siehe die Fehlermeldung fü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ät $1 ..
|
||||
mount_slot=Auto-Lader-Slot
|
||||
mount_slotno=Slotnummer
|
||||
mount_storage=Speichergerä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äfix beschriften
|
||||
pool_echild=Dieser Client kann nicht gelöscht werden, da dieser von $1 genutzt wird
|
||||
pool_eclash=Ein Speichergerät mit dem gleichen Namen ist bereits vorhanden
|
||||
pool_egone=Volume Pool existiert nicht länger!
|
||||
pool_emax=Fehlende oder ungültige maximale Anzahl an Jobs pro Volume
|
||||
pool_ename=Fehlender Speichergerät-Name
|
||||
pool_ereten=Fehlende oder ungültige Aufbewahrungsfrist
|
||||
pool_err=Fehlgeschlagen Speichergerät zu speichern
|
||||
pool_header=Details vom Backup Volume Pool
|
||||
pool_max=Maximale Jobs pro Volume
|
||||
pool_maxvolsize=Maximale Volume Größe (z.B. 5G für 5 Gigabyte)
|
||||
@@ -413,6 +435,7 @@ pool_type=Volume Pool Typ
|
||||
pool_unlimited=Unlimitiert
|
||||
pools_add=Füge einen neuen Volume Pool hinzu.
|
||||
pools_delete=Lösche ausgewählte Datenträger-Pools
|
||||
pools_derr=Fehlgeschlagen Volume-Pools zu lö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ür <b>Wiederherstellen zum Client oder Gruppen</b> ausgewählt werden, wenn eine Gruppe Bacula Job wiederhergestellt werden soll.
|
||||
restore_eall2=Die <b>Alle Clients in Backup</b> Option kann nur gewählt werden, fü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ä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ühren
|
||||
schedule_times=Läuft um
|
||||
schedule_title1=Erstelle Backup-Zeitplan
|
||||
schedule_title2=Editiere Backup-Zeitplan
|
||||
schedules_add=Füge einen neuen Backup-Zeitplan hinzu.
|
||||
schedules_delete=Lösche ausgewählte Zeitpläne
|
||||
schedules_derr=Fehlgeschlagen Zeitpläne zu löschen
|
||||
schedules_name=Zeitplan Name
|
||||
schedules_none=Keine Sicherungspläne wurden bisher festgelegt.
|
||||
schedules_return=Liste der Zeitpläne
|
||||
schedules_sched=Level und Zeiten ausführen
|
||||
schedules_title=Backup-Zeitpläne
|
||||
sdirector_eclash=Ein Direktor mit dem gleichen Namen ist bereits vorhanden
|
||||
sdirector_egone=Director existiert nicht lä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 Überwachung der Verbindung erlauben?
|
||||
sdirector_name=Director Name
|
||||
sdirector_pass=Akzeptiertes Passwort
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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" : "",
|
||||
"<".$text{'acl_toplevel'}.">";
|
||||
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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
©_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("");
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
BIN
bind8/images/DMARC.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 314 B |
BIN
bind8/images/NSEC3PARAM.gif
Normal file
BIN
bind8/images/NSEC3PARAM.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 251 B |
@@ -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
|
||||
|
||||
@@ -106,7 +106,10 @@ controls_unixopt=Erlaube Kontrolle ü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ötigt wird, um von einem binären Slave-Zone in ein Textformat-Master zu konvertieren, ist nicht installiert
|
||||
convert_ecompile=Binä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äge-Datei $1 existiert nicht oder ist leer
|
||||
convert_err=Zone konnte nicht umgewandelt werden
|
||||
create_edom='$1' ist kein gültiger Domainname
|
||||
create_edom2='$1' muss eine Domain und kein Netzwerk sein
|
||||
@@ -185,6 +188,7 @@ dt_zone_createkrf=Erstelle keyrec Datei für die Zone $1 und verschiebe Schl
|
||||
dt_zone_deleting_state=Lösche aller Zustände, die mit Zone $1 verbunden sind ...
|
||||
dt_zone_desc=Diese Zone hat noch nicht bisher DNSSEC aktiviert. Sie können dieses Formular nutzen, um Webmin mit DNSSEC-Tools automatisieren, so dass die Clients der Zone durch dieser Zone gegen DNS-Spoofing-Attacken geschützt sind.
|
||||
dt_zone_disable=Deaktiviere DNSSEC
|
||||
dt_zone_disabledesc=Entfernt diese Zone aus der Liste der Zonen, die durch DNSSEC-Tools für die Zone-Signierung und Schlü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=Öffentlicher Schlüssel
|
||||
edit_LOC=Ortsangabe
|
||||
@@ -238,6 +243,9 @@ edit_ecname='$1' ist kein gü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ür $1
|
||||
edit_eemail='$1' ist keine gültige E-Mail-Adresse
|
||||
edit_eflags='$1' ist keine gültige dezimale oder hexadezimale Flagzahl
|
||||
@@ -269,6 +277,7 @@ edit_espfinclude='$1' ist keine gültige zusätzliche Domain von der E-M
|
||||
edit_espfip='$1' ist keine gültige IP-Adresse oder IP/Netzmaske um den Versand zu erlauben
|
||||
edit_espfip6='$1' ist keine gültige IPv6 Adresse oder IPv6/prefix von dem gesendet werden kann
|
||||
edit_espfmx='$1' ist kein gültiger Domainname um vom MX aus zu senden
|
||||
edit_espfmxmax=Sie dürfen nicht mehr als 10 Domains erlauben MX zu senden von
|
||||
edit_espfredirect='$1' ist kein alternativer Domainname
|
||||
edit_etarget='$1' ist kein gültiger Servername oder keine gültige IP-Adresse.
|
||||
edit_ettl='$1' ist keine gültige Time-To-Live
|
||||
@@ -362,7 +371,7 @@ gen_eskip=Fehlende oder ungültige Schrittweite für den Eintrag $1
|
||||
gen_estart=Fehlender oder ungültiger Startwert für Eintrag $1
|
||||
gen_estop=Fehlender oder ungültiger Eintrag für das Ende des Bereiches beim Eintrag $1
|
||||
gen_evalue=Fehlendes oder ungü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äge
|
||||
@@ -370,7 +379,7 @@ gen_skip=Schrittweite
|
||||
gen_title=Generierung von fortlaufenden Einträgen
|
||||
gen_title2=Erzeugte Einträ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ö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ötigen Sie eventuell eine eigene Root-Zone in jeder Ansicht, so dass alle Clients die Internet Domains korrekt auflösen kö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öscht
|
||||
log_delete_zones=$1 Zonen gelöscht
|
||||
log_files=Dateien und Verzeichnisse geändert
|
||||
log_forwarding=Forwarding und Transfer geändert
|
||||
log_freeze=Zone $1 eingefroren
|
||||
log_hint=Root-Zone erstellt
|
||||
log_keys=DNS-Schlüssel geändert
|
||||
log_logging=Logging und Fehler geändert
|
||||
@@ -508,6 +518,7 @@ log_start=Gestarteter DNS-Server
|
||||
log_stop=Gestoppter DNS-Server
|
||||
log_stub=Stub Zone $1 erstellt
|
||||
log_text=Datensätze für $1 manuell bearbeitet
|
||||
log_thaw=Zone $1 aufgetaut
|
||||
log_trusted=DNSSEC Verifikation geändert
|
||||
log_update_zones=Einträge in $1 Zonen geä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=Öffentlicher Schlüssel
|
||||
recs_LOC=Ortsangabe
|
||||
@@ -958,6 +970,7 @@ type_A=Adresse
|
||||
type_AAAA=IPv6-Adresse
|
||||
type_ALL=Alle Einträge
|
||||
type_CNAME=Namens-Alias
|
||||
type_DMARC=DMARC
|
||||
type_HINFO=Host-Information
|
||||
type_KEY=Öffentlicher Schlüssel
|
||||
type_LOC=Ortsangabe
|
||||
@@ -990,6 +1003,7 @@ umass_type=Eintragsarten fü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ür E-Mails, welche SPF oder DKIM fehlschlägt
|
||||
value_dmarcpct=Prozentsatz der Nachrichten, um Regel anzuwenden
|
||||
value_dmarcquar=Quarantäne-E-Mail
|
||||
value_dmarcreject=Weise E-Mail zurück
|
||||
value_dmarcrua=Sende aggregiertes Feedback an
|
||||
value_dmarcruf=Sende forensische Informationen an
|
||||
value_dmarcsp=Regeln fü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übertragung mit $1 Datensätze erfolgreich aus mindestens einem Nameserver empfangen. Die tatsä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üssel-Algorithmus
|
||||
zonekey_already=Die Zone hat bereits einen DNSSEC-Schlüssel, und so ist es bereits signiert.
|
||||
zonekey_ave=Durchschnittliche Größe
|
||||
zonekey_creating=Erstelle DNSSEC Schlüssel für $1 ..
|
||||
zonekey_desc=Diese Zone hat bisher keine DNSSEC-Signaturschlüssel. Sie können dieses Formular verwenden, um mit Webmin welche zu erstellen, so dass die Clients diese Zone auflösen können und gegen DNS-Spoofing-Attacken geschützt sind.
|
||||
zonekey_disable=Lösche Schlüssel
|
||||
zonekey_disabledesc=Entfernt die DNSSEC-Schlüssel aus dieser Zone und alle signierten Einträgen. Sobald dies erledigt ist, werden Sie in der Lage, einen neuen Schlüssel zu generieren.
|
||||
zonekey_done=.. fertig
|
||||
zonekey_ds=DS Eintrag für übergeordnete Zone :
|
||||
zonekey_ecreate=.. Erzeugung fehlgeschlagen : $1
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -224,6 +224,7 @@ edit_KEY=Offentlig nø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ø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ø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ø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å salt
|
||||
value_NSEC3PARAM5=Salt streng
|
||||
value_PTR1=Vertsnavn
|
||||
value_RP1=E-post adresse
|
||||
value_RP2=Tekst-oppfø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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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+$/ ||
|
||||
|
||||
@@ -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
10
cfengine/config.info.no
Normal 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 å starte cfd,3,Bare kjør programmet
|
||||
stop_cmd=Kommando for å stoppe cfd,3,Bare stopp prosessen
|
||||
@@ -28,6 +28,7 @@ edit_cmdowner=Ausführen als Benutzer
|
||||
edit_cmdtimeout=Timeout
|
||||
edit_controlall=Alle Adressen
|
||||
edit_controlallow=Erlaube Verbindungen von
|
||||
edit_controlauto=Befehl, um nach Zeitplan auszuführen
|
||||
edit_controldef=Globale Definitionen
|
||||
edit_controldeny=Verbiete Verbindungen von
|
||||
edit_controldom=Domä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 über alle Dateien
|
||||
edit_files_warndirs=Warne ü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ä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äubern
|
||||
edit_tidymtime=Änderungszeit
|
||||
edit_tidynew=Füge ein Verzeichnis zum säubern hinzu
|
||||
|
||||
387
cfengine/lang/no
Normal file
387
cfengine/lang/no
Normal file
@@ -0,0 +1,387 @@
|
||||
add_ecfengine=CFengine er ikke installert på tjener $1
|
||||
add_echeck=Tjener $1 har ikke konfigurasjonsmotor modulen
|
||||
add_err=Kunne ikke legge til tjener
|
||||
add_eversion=CFengine på tjener $1 er versjon $2, men denne Webmin modulen stø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å systemet ditt. Kanskje den ikke er installert, eller så 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å denne knappen for å starte Configuration Engine daemonen med innstillingene ovenfor. Dette vil tillate andre verter å kjøre konfigurasjonen på denne tjeneren, og start tidsplanlagt kjøring av konfigurasjonen (hvis dette er aktivert).
|
||||
cfd_stop=Stop Konfigurasjonsmotor Daemon
|
||||
cfd_stopdesc=Klikk på denne knappen for å stoppe Konfigurasjonsmotor daemonen. Dette vil forhindre andre verter fra å kjøre konfigurasjonen på denne tjeneren, og stopp den planlagte kjøringen av konfigurasjonen.
|
||||
cfd_title=Konfigurasjonsmotor Daemon
|
||||
cluster_failed=Kunne ikke kjøre CFengine på $1 : $2
|
||||
cluster_header=Kjører konfigurasjonsmotor på alle verter i klyngen ..
|
||||
cluster_success=Output fra CFengine på $1 ..
|
||||
cluster_title=Kjør Konfigurasjonsmotor
|
||||
edit_actionadd=Legg til valgt handling
|
||||
edit_actionseq=Handlinger som skal kjøres i rekkefølge
|
||||
edit_admit=Gi tilgang til kataloger
|
||||
edit_all=Enhver klasse
|
||||
edit_class=Bruk på klasse
|
||||
edit_cmd=Skall-kommando som skal kjøres
|
||||
edit_cmdgroup=Kjør som gruppe
|
||||
edit_cmdowner=Kjør som bruker
|
||||
edit_cmdtimeout=Tidsavbrudd
|
||||
edit_controlall=Alle adresser
|
||||
edit_controlallow=Tillat tilkoblinger fra
|
||||
edit_controlauto=Kommando som skal kjøres i hht. tidsplan
|
||||
edit_controldef=Global definisjon
|
||||
edit_controldeny=Nekt tilkoblinger fra
|
||||
edit_controldom=Domenenavn
|
||||
edit_controlelapsed=Minimum minutter mellom kjøringer
|
||||
edit_controlinterval=Minutter mellom tidsplanlagte kjøringer
|
||||
edit_controllog=Loggfør alle tilkoblinger?
|
||||
edit_controlmax=Maksimum samtidige kjøringer
|
||||
edit_controlnone=Ingen adresser
|
||||
edit_controlrun=Kommando som skal kjøres på forespø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å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ørrelses-begrensing
|
||||
edit_copysize1=Er lik
|
||||
edit_copysize2=Mindre enn
|
||||
edit_copysize3=Stø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 å deaktivere
|
||||
edit_disrot=Handling ved deaktivering
|
||||
edit_disrot0=Omdøp med <tt>.cfdisabled</tt> tilføyd
|
||||
edit_disrot1=Trunker fil
|
||||
edit_disrot2=Roter $1 ganger
|
||||
edit_dissize=Deaktiver bare dersom stø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ø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ø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å
|
||||
edit_grant=$edit_admit
|
||||
edit_grantdir=Katalog
|
||||
edit_granthosts=Verter og verts-mø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ø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ønster som skal matches
|
||||
edit_procowner=Kjør kommando som bruker
|
||||
edit_procrestart=Kommando som skal kjø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ørrelsesbegrensing
|
||||
edit_tidysize0=Enhver filstørrelse
|
||||
edit_tidysize1=Tomme filer
|
||||
edit_tidysize2=Filer stø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ør konfigurasjon
|
||||
hosts_copydesc=Klikk på denne knappen for å 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ører CFengine er definert enda.
|
||||
hosts_opts=Innstillinger for kjørende konfigurasjoner
|
||||
hosts_return=tjener liste
|
||||
hosts_run=Kjør Configuration Engine
|
||||
hosts_rundesc=Klikk på denne knappen for å kjøre Konfigurasjonsmotor på 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ør kommando $1
|
||||
index_classes=Bruk på klasser
|
||||
index_control=Kjør handling $1
|
||||
index_control2=Kjø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å systemet ditt. Kanskje den ikke er installert, eller så er <a href='$2'>modulkonfigurasjonen</a> feil.
|
||||
index_econfig=Konfigurasjonsmotor konfig.filen $1 ble ikke funnet på systemet ditt. Kanskje den ikke er installert, eller så 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å systemet ditt er versjon $2, men denne Webmin modulen støtter bare versjonene $3.
|
||||
index_files=Sett tillatelser på $1
|
||||
index_files2=Sett tillatelser på $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 ø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ør Konfigurasjonsmotor
|
||||
index_rundesc=Klikk på denne knappen for å kjøre kommandoen $1 på denne verten. Alle handlinger listet ovenfor vil bli utført umiddelbart, der det er nødvendig.
|
||||
index_section=Handlingstype
|
||||
index_shellcommands=Kjør kommando $1
|
||||
index_shellcommands2=Kjø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ørte vertskonfigurasjoner
|
||||
log_push=Endret eksterne konfigurasjonsverter
|
||||
log_run=Kjø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å systemet ditt. Kanskje den ikke er installert, eller så 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ører vertskonfigurasjoner med kommandoen $1 ..
|
||||
push_header=Konfigurasjonstjener distribusjonsinnstillinger
|
||||
push_host=Klient vertsnavn
|
||||
push_opts=CFengine innstillinger for klient
|
||||
push_push=Kjør vertskonfigurasjoner
|
||||
push_pushdesc=Klikk på denne knappen for å kjøre Konfigurasjonsmotor på 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ør vertskonfigurasjoner
|
||||
push_users=Brukere som kan kjøre <tt>cfrun</tt>
|
||||
run_desc=Denne siden kan brukes til å kjøre Konfigurasjonsmotor på denne verten. Når den kjøres vil handlingene du har konfigurert bli utført der det er nødvendig.
|
||||
run_dry=Vis bare det som ville blitt gjort?
|
||||
run_exec=Kjører kommando $1 ..
|
||||
run_header=Innstillinger for å kjøre CFengine på denne verten
|
||||
run_nocmd=Kan utfø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ør nå
|
||||
run_title=Kjø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 å tillate angitt
|
||||
save_econtrolauto=Kommando som skal kjøres automatisk '$1' finnes ikke
|
||||
save_econtroldef=Ugyldig navn for global definisjon $1
|
||||
save_econtroldeny=Ingen adresser å nekte angitt
|
||||
save_econtroldomain=Ugyldig domenenavn
|
||||
save_econtrolelapsed=Ugyldig minimum minutter mellom kjøringer
|
||||
save_econtrolinterval=Ugyldig antall minutter mellom tidsplanlagte kjøringer
|
||||
save_econtrolrun=Kommando å kjøre '$1' finnes ikke
|
||||
save_econtrolskip=Ingen adresser å hoppe over omvendt oppslag for angitt
|
||||
save_ecopydest=Mangler må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å for kopi av $1
|
||||
save_ecopyserver=Manglende eller ugyldig tjener for kopi av $1
|
||||
save_ecopysize=Manglende eller ugyldig stø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ørrelse for fil $1
|
||||
save_eeditfile=Manglende fil å 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ø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ø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å for filer i katalogen $1
|
||||
save_egrantdir=Ugyldig sti for katalog $1
|
||||
save_egranthost='$1' er ikke gyldig vert eller vertsmø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ø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 å 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 å rydde $1
|
||||
save_etidyage=Manglende eller ugyldig antall dager for katalog $1
|
||||
save_etidypat=Manglende eller ugyldig filmønster for katalog $1
|
||||
save_etidyrec=Manglende elelr ugyldig heltalls rekursjonsnivå for katalog $1
|
||||
save_etidysize=Manglende eller ugyldig filstørrelse for katalog $1
|
||||
section_admit=Tillatte kataloger
|
||||
section_binservers=Tjenere for binæ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ø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ø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ønstre (som <tt>*.domene.no</tt>).
|
||||
type_classes=$type_group
|
||||
type_control_0=Feltet nedenfor angir handlinger som utføres når konfigurasjonsmotoren kjører, i den rekkefølgen de utføres. Handlinger som ikke vises her vil ikke bli kjørt, selv om de er angitt på hovedsiden.
|
||||
type_control_1=Innstillingene nedenfor kontrollerer den globale oppførselsen til bakgrunnsprosessen som mottar forespørsler om å utføre konfigurasjonen på denne verten, når dette forespø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ålkatalogen/-disken, når nødvendig. Du kan også velge å kopiere fra en ekstern vert, så lenge den verten kjører konfigurasjonsmotor daemonen og tillater denne verten å kopiere filer.
|
||||
type_defaultroute=Når denne handlingen kjø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ø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 å se om de finnes og er i overenstemmelse med valgte størrelses- og type-kriterier, og i så fall bli deaktivert enten ved omdøping aller avkorting.
|
||||
type_disks=$type_required
|
||||
type_editfiles=Tekstområdet nedenfor kan brukes for å legge inn et script som redigerer valgt fil ved å legge til, slette eller oppdatere linjer der det er nødvendig. Sjekk CFengines dokumentasjon for å se syntaksen for dette script-språket.
|
||||
type_grant=$type_admit
|
||||
type_groups=Bruk tabellen nedenfor til å definere ekstra grupper av verter som brukes andre steder i konfigurasjonen som klassenavn. Grupper kan også inneholde skall-kommandoer i spørringer som utføres for å 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øring kan være en full sti, en skall-stil regulæ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ål, vil den vanligvis ikke bli endret.
|
||||
type_miscmounts=NFS filsystem monteringer angitt nedenfor vil bli sjekket og montert hvis nødvendig når CFengine kjøres. NFS tjener og sti feltet må angis på standard format (<tt>tjenernavn:/sti/navn</tt>). Monteringsinnstillinger må være på samme format som brukes i <tt>/etc/fstab</tt> filen, og er valgfrie.
|
||||
type_processes=Bruk feltet nedenfor til å søke etter prosesser som matcher angitt mønster, og eventuelt sende dem et signal for å stoppe dem. Når en prosess stoppes kan du også angi en kommando som skal kjøres for å starte prosessen på nytt.
|
||||
type_required=Filsystemene angitt nedenfor vil bli sjekket når denne handlingen kjøres for å verifisere at de er montert, og hvis ikke vil det bli vist en advarsel. Hvert filsystem vil også bli sjekket for å se om ledig diskplass er under et eventuelt angitt minimum.
|
||||
type_resolve=DNS tjeners IP adresse som du angir nedenfor vil bli brukt til å oppdatere <tt>/etc/resolv.conf</tt> når denne handlingen kjøres.
|
||||
type_shellcommands=Kommandoene angitt nedenfor vil bli utført hver gang konfigurasjonsmotoren kjøres. Feltene for bruker og gruppe er valgfrie - dersom ingenting er angitt i disse vil kommandoen kjøres som root. Feltet for tidsavbrudd er også valgfritt - dersom det ikke er angitt noe tidsavbrudd vil CFengine vente helt til kommandoen er fullført.
|
||||
type_tidy=Katalogene angitt nedenfor vil bli scannet for filer som matcher valgte navne-, alders- og tidspunkt-kriterier hver gang CFengine kjøres. Alle filer som finnes vil bli slettet, uten at noen sikkerhetskopi tas.
|
||||
@@ -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>nà 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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,36 +1,36 @@
|
||||
__norefs=1
|
||||
acl_lang=Darf Sprache ändern?
|
||||
acl_pass=Darf das Passwort ändern, wenn das in Webmin so eingestellt ist?
|
||||
acl_theme=Darf Design ändern?
|
||||
change_done=.. erledigt
|
||||
change_ecolon=Ihr Passwort darf das Zeichen <tt> : </tt> nicht enthalten!
|
||||
change_eoverlay=Sie können kein ein Thema Overlay auswählen, sofern ein UI theme gewählt wurde
|
||||
change_eoverlay2=Das ausgewählte Thema Overlay ist nicht kompatibel mit dem gewählten UI Thema
|
||||
change_epass=Neues Passwort ist ungültig : $1
|
||||
index_overlaydef=Keine - benutze Design Standards
|
||||
index_themeglobal=Globales Design ($1)
|
||||
index_langset=Persönliche Auswahl ..
|
||||
change_epass2=Neue Passwörter stimmen nicht überein
|
||||
change_redirect=Leite zum Hauptmenü zurück ..
|
||||
change_restart=Starte Webmin neu ..
|
||||
change_title=Ä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önliche Auswahl ..
|
||||
index_desc2=Dieses Modul kann lediglich für das Ä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 ändern?
|
||||
change_eoverlay=Sie können kein ein Thema Overlay auswählen, sofern ein UI theme gewählt wurde
|
||||
index_passagain=Erneute Passworteingabe
|
||||
index_themedef=Altes Webmin-Design
|
||||
index_theme=Webmin-Design
|
||||
index_ok=Änderungen durchfü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önliche Auswahl ..
|
||||
index_ok=Änderungen durchfü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ändert lassen
|
||||
index_passset=Einstellen auf ..
|
||||
index_theme=Webmin-Design
|
||||
index_themedef=Altes Webmin-Design
|
||||
index_themeglobal=Globales Design ($1)
|
||||
index_themeset=Persönliche Auswahl ..
|
||||
index_pass=Webmin-Passwort
|
||||
index_d1=$1
|
||||
change_restart=Starte Webmin neu ..
|
||||
acl_theme=Darf Design ändern?
|
||||
index_d2=$1 und $2
|
||||
index_overlay=Theme overlay
|
||||
index_title=Sprache und Design von Webmin ändern
|
||||
change_redirect=Leite zum Hauptmenü zurück ..
|
||||
change_eoverlay2=Das ausgewählte Thema Overlay ist nicht kompatibel mit dem gewählten UI Thema
|
||||
change_title=Ändere die Einstellungen
|
||||
index_dpass=dem Passwort, welches zum Anmelden erforderlich ist,
|
||||
index_passset=Einstellen auf ..
|
||||
acl_pass=Darf das Passwort ändern, wenn das in Webmin so eingestellt ist?
|
||||
index_dlang=der Sprache, in welcher die Module angezeigt werden
|
||||
change_epass=Neues Passwort ist ungültig : $1
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -20,7 +20,7 @@ index_dlang=språket modulene vises i
|
||||
index_dpass=passordet brukt til å logge inn på
|
||||
index_dtheme=temaet som kontrollerer Webmins utseende
|
||||
index_lang=Webmin UI språk
|
||||
index_langglobal=Globalt språk ($1)
|
||||
index_langglobal2=Globalt språk .. $1 ($2)
|
||||
index_langset=Personlig valg
|
||||
index_ok=Lagre endringer
|
||||
index_overlay=Tema overstyring
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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, [ "", "<$text{'esub_none'}>", ( $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, [ "", "<$text{'esub_none'}>" ]);
|
||||
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 {
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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'}) );
|
||||
|
||||
@@ -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
4
fail2ban/config.info.no
Normal 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
|
||||
@@ -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'}) {
|
||||
|
||||
@@ -116,6 +116,7 @@ my @rv;
|
||||
while(<$fh>) {
|
||||
s/\r|\n//g;
|
||||
s/^\s*#.*$//;
|
||||
s/^\s;.*$//;
|
||||
if (/^\[([^\]]+)\]/) {
|
||||
# Start of a section
|
||||
$sect = { 'name' => $1,
|
||||
|
||||
@@ -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
159
fail2ban/lang/no
Normal file
@@ -0,0 +1,159 @@
|
||||
__norefs=1
|
||||
action_ban=Kommando for å bannlyse en IP
|
||||
action_check=Kommando som skal kjøres før en IP bannlyses
|
||||
action_desc=<i><ip></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øres ved Fail2Ban oppstart
|
||||
action_stop=Kommando som skal kjøres ved Fail2Ban avstenging
|
||||
action_title1=Opprett Match handling
|
||||
action_title2=Rediger Match handling
|
||||
action_unban=Kommando for å 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ål
|
||||
config_edef=Ingen Definition seksjon funnet i konfig.fil!
|
||||
config_elogtarget=Filen som logger skal skrives til må være en absolutt sti
|
||||
config_err=Kunne ikke lagre global konfigurasjon
|
||||
config_esocket=Socket-fil må være en absolutt sti
|
||||
config_file=Loggfil
|
||||
config_header=Konfig. innstillinger for Fail2Ban
|
||||
config_loglevel=Minimum loggingsnivå
|
||||
config_logtarget=Skriv logger til
|
||||
config_socket=Socket for kommunikasjon med tjener
|
||||
config_syslog=Syslog tjeneste
|
||||
config_title=Global konfigurasjon
|
||||
filter_desc=Bruk <i><HOST></i> i regulæ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ært uttrykk å 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ære uttrykk å matche
|
||||
filter_header=Loggfilter detaljer
|
||||
filter_ignore=Regulære uttrykk å 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ært uttrykk
|
||||
filters_return=liste over filtere
|
||||
filters_title=Loggfiltere
|
||||
index_atboot=Start ved oppstart?
|
||||
index_atbootdesc=Endre denne innstillingen for å kontrollere hvorvidt Fail2Ban tjeneren startes når systemet startes opp. Hvis nødvendig, vil det bli opprettet et oppstartsscript slik at tjeneren startes på korrekt måte.
|
||||
index_echeck=En feil oppstod under oppdaging av Fail2Ban på dette systemet : $1. Enten er den ikke installert eller så er <a href='$2'>modulkonfigurasjonen</a> feil.
|
||||
index_fail2ban=Fail2Ban
|
||||
index_restart=Omstart Fail2Ban tjener
|
||||
index_restartdesc=Klikk på denne knappen for å ta i bruk gjeldende konfigurasjon ved å omstarte Fail2Ban tjeneren.
|
||||
index_return=modulindeks
|
||||
index_start=Start Fail2Ban tjener
|
||||
index_startdesc=Klikk på denne knappen for å starte Fail2Ban tjeneren, slik at logganalyse blir utført.
|
||||
index_stop=Stopp Fail2Ban tjener
|
||||
index_stopdesc=Klikk på denne knappen for å 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 å 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å være et tall stø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å være et tall større enn null
|
||||
jail_egone=Fengsel finnes ikke lenger!
|
||||
jail_eignoreip=Ugyldig IP-adresse å ignorere
|
||||
jail_elogpath=Alle loggfiler må være absolutte stier eller mønstere
|
||||
jail_elogpaths=Ingen loggfil-stier angitt
|
||||
jail_emaxretry=Matches for en handling tas i bruk må være et tall større enn null
|
||||
jail_enabled=Aktivert for ø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økes i logg etter
|
||||
jail_findtime=Maks forsinkelse mellom matcher
|
||||
jail_gamin=Gamin filendrings-overvåker
|
||||
jail_header=Detaljer for filter-handling fengsel
|
||||
jail_ignoreip=IP-adresser som aldri skal bannlyses
|
||||
jail_logpath=Loggfil stier
|
||||
jail_maxretry=Matcher fø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å som antall på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
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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öschen möchten?
|
||||
clear_title=Regeln leeren
|
||||
cluster_add=Füge Server hinzu
|
||||
cluster_delete=Ausgewähltes lö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öschen
|
||||
delete_ok=Lösche jetzt
|
||||
delete_rusure=Sind Sie sicher, dass Sie die Kette $1 löschen möchten? $2 Regeln werden in ihr gelöscht.
|
||||
delete_title=Lösche Regel
|
||||
desc_always=Immer
|
||||
desc_and=und
|
||||
@@ -170,6 +172,7 @@ index_auto5=Blockiere alles ausgenommen Ports die für virtuelles Hosting be
|
||||
index_bootup=Aktiviere beim Booten
|
||||
index_bootupdesc=Ändert die Option, um zu kontrollieren, ob Ihre Firewall beim Booten aktiviert ist oder nicht.
|
||||
index_cclear=Lösche alle Regeln
|
||||
index_cdelete=Lösche Kette
|
||||
index_cdeletesel=Lösches ausgewähltes
|
||||
index_chain=Regel $1
|
||||
index_chain_forward=Weitergeleitete Pakete (FORWARD) - Gilt nur für Pakete, die dieser Host weitergeleitet hat
|
||||
@@ -182,11 +185,13 @@ index_cluster=Cluster Server
|
||||
index_clusterdesc=Klicken Sie auf diese Schaltfläche, um zusätzliche Webmin-Server einzurichten, mit denen die Firewall-Konfiguration automatisch kopiert werden.
|
||||
index_cmovesel=Verschiebe ausgewä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ötigt diesen Befehl um IPtables zu konfigurieren.
|
||||
index_editing=Regel Datei $1
|
||||
index_ekernel=Ein Fehler ist beim Überprüfen Ihrer aktuellen IPtables-Konfiguration aufgetreten : $1 Dies könnte darauf hindeuten, dass Ihr Kernel IPtables nicht unterstü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äche unten, um die bestehenden Regeln zu einer Sicherungsdatei zu konvertieren und anschließ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ü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ü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öffnet
|
||||
log_rename_chain=Kette $1 in Tabelle $2 umbenannt
|
||||
log_setup=Firewall eingerichtet
|
||||
log_unapply=Konfiguration zurückgesetzt
|
||||
move_chain=Aktuelle Änderung
|
||||
move_count=Regeln ausgewä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ü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ückzufü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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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å denne knappen for å lagre konfigurasjonen ovenfor i den permanente brannmur-konfigurasjonsfilen
|
||||
index_unapplydesc=Klikk på denne knappen for å tilbakestille konfigurasjonen ovenfor til den konfigurasjonen som er aktive for ø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å 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å ditt system.
|
||||
rename_adjust=Endre andre regler som hopper til denne kjeden?
|
||||
rename_chain=Gjeldende navn
|
||||
rename_count=Regler i kjede
|
||||
|
||||
@@ -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öglicht die Bearbeitung aller Tabellen, Ketten, Regeln und Optionen.
|
||||
|
||||
@@ -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
2
firewalld/CHANGELOG
Normal 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
18
firewalld/bootup.cgi
Executable 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
2
firewalld/config
Normal file
@@ -0,0 +1,2 @@
|
||||
firewall_cmd=firewall-cmd
|
||||
init_name=firewalld
|
||||
2
firewalld/config.info
Normal file
2
firewalld/config.info
Normal 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
2
firewalld/config.info.de
Normal file
@@ -0,0 +1,2 @@
|
||||
firewall_cmd=Voller Pfad zum firewall-cmd Programm,0
|
||||
init_name=FirewallD init-script-Name,0
|
||||
77
firewalld/create_zone.cgi
Normal file
77
firewalld/create_zone.cgi
Normal 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'}));
|
||||
|
||||
21
firewalld/default_zone.cgi
Normal file
21
firewalld/default_zone.cgi
Normal 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'}));
|
||||
32
firewalld/delete_rules.cgi
Normal file
32
firewalld/delete_rules.cgi
Normal 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
39
firewalld/delete_zone.cgi
Normal 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
68
firewalld/edit_port.cgi
Normal 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
47
firewalld/edit_serv.cgi
Normal 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
220
firewalld/firewalld-lib.pl
Normal 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
BIN
firewalld/images/icon.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
147
firewalld/index.cgi
Normal file
147
firewalld/index.cgi
Normal 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'})," ",
|
||||
&ui_submit($text{'index_zonedef'}, "defzone")," ",
|
||||
&ui_submit($text{'index_zonedel'}, "delzone")," ",
|
||||
&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
20
firewalld/install_check.pl
Executable 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
86
firewalld/lang/de
Normal 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ählt!
|
||||
delete_err=Fehlgeschlagen Regel zu löschen
|
||||
delzone_edefault=Die Standardzone kann nicht entfernt werden
|
||||
delzone_err=Fehlgeschlagen Zone zu löschen
|
||||
delzone_rusure=Sind Sie sich sicher die Zone $1, welche $2 Ports und $3 Dienste enthält, zu löschen?
|
||||
delzone_title=Lösche Zone
|
||||
index_apply=Konfiguration anwenden
|
||||
index_applydesc=Klicken auf diese Schaltfläche, um die Firewall-Konfiguration, welche oben aufgefü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=Ä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ösche ausgewä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ü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ührt sind, in allen Zonen. Alle aktiven Regeln, die nicht dauerhaft erstellt wurden, werden ersetzt.
|
||||
index_return=Liste an Zonen
|
||||
index_sadd=Füge erlaubten Dienst hinzu.
|
||||
index_start=Starte FirewallD
|
||||
index_startdesc=Starte den FirewallD Server und wende alle oben aufgeführten Regeln an.
|
||||
index_stop=Stoppe FirewallD
|
||||
index_stopdesc=Fahre den FirewallD Server herunter und entferne alle oben aufgeführten Regeln.
|
||||
index_title=FirewallD
|
||||
index_tport=Port
|
||||
index_tservice=Dienst
|
||||
index_type=Regel-Typ
|
||||
index_zone=Zeige Regel in Zone:
|
||||
index_zoneadd=Füge Zone hinzu..
|
||||
index_zonedel=Lösche Zone
|
||||
index_zoneok=Ändern
|
||||
log_bootdown=FirewallD beim Booten deaktiviert
|
||||
log_bootup=FirewallD beim Booten aktiviert
|
||||
log_create_port=Erlaubter Port $1 hinzugefügt
|
||||
log_create_serv=Erlaubter Dienst $1 hinzugefügt
|
||||
log_create_zone=Zone $1 erstellt
|
||||
log_delete_port=Erlaubter Dienst $1 gelöscht
|
||||
log_delete_rules=$1 erlaubte Ports gelöscht
|
||||
log_delete_serv=Erlaubter Dienst $1 gelöscht
|
||||
log_delete_zone=Zone $1 gelöscht
|
||||
log_ifaces_zone=Schnittstelle fü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üge erlaubten Port hinzu
|
||||
port_edit=Editiere erlaubten Port
|
||||
port_eport=Fehlender oder ungü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ü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ü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ür das virtuelle Hosting verwendet werden
|
||||
zone_name=Zonen-Namen
|
||||
zone_title=Erstelle Zone
|
||||
98
firewalld/lang/en
Normal file
98
firewalld/lang/en
Normal 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
29
firewalld/log_parser.pl
Executable 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, ¶ms)
|
||||
# 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
7
firewalld/module.info
Normal 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
107
firewalld/open-ports.pl
Executable 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
12
firewalld/restart.cgi
Normal 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
21
firewalld/save_ifaces.cgi
Normal 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
61
firewalld/save_port.cgi
Normal 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
42
firewalld/save_serv.cgi
Normal 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
12
firewalld/start.cgi
Normal 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
12
firewalld/stop.cgi
Normal 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
33
firewalld/zone_form.cgi
Normal 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'});
|
||||
@@ -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.
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user