Compare commits
748 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
984ad50d21 | ||
|
|
595ce7d9ff | ||
|
|
7241591c10 | ||
|
|
339366c7f4 | ||
|
|
bbbdb849eb | ||
|
|
3e2cc2aaec | ||
|
|
40fc32148a | ||
|
|
7c64ef41ad | ||
|
|
bafb4e3808 | ||
|
|
9c7274e283 | ||
|
|
dc121cc427 | ||
|
|
7d520e1d17 | ||
|
|
51f96900da | ||
|
|
d0a3b27647 | ||
|
|
9daf4b2d17 | ||
|
|
2e625451a3 | ||
|
|
6330deb1bc | ||
|
|
ba7b2a7cfa | ||
|
|
d238e19289 | ||
|
|
7b4d33f0fa | ||
|
|
5c5b79fc5e | ||
|
|
fcadcdee09 | ||
|
|
2a6fe1a536 | ||
|
|
8a99221212 | ||
|
|
0a549477c3 | ||
|
|
66425fd51b | ||
|
|
510d996761 | ||
|
|
651e5ac2be | ||
|
|
34de88aa52 | ||
|
|
a3675dcc32 | ||
|
|
8d6e1a33dd | ||
|
|
3cf72674be | ||
|
|
17b58c4a07 | ||
|
|
b0f15dc79a | ||
|
|
2b0c4facbd | ||
|
|
69cf2f635b | ||
|
|
d8beb7b44f | ||
|
|
f6fa7e6eb2 | ||
|
|
3a7045666b | ||
|
|
89b0cc991a | ||
|
|
f800f29418 | ||
|
|
205060e59b | ||
|
|
4730e04c3c | ||
|
|
82bb4284ba | ||
|
|
e55c4ef1a6 | ||
|
|
3e5f88b5dc | ||
|
|
fef2f9bb88 | ||
|
|
a643d4ed73 | ||
|
|
a392cded47 | ||
|
|
179e945308 | ||
|
|
08e23517cf | ||
|
|
9b8078e7d0 | ||
|
|
fd064fb9ca | ||
|
|
dd941eba08 | ||
|
|
2c2bfa62be | ||
|
|
6ada786601 | ||
|
|
9959a2aa68 | ||
|
|
42d902ab4f | ||
|
|
e09fccf402 | ||
|
|
6a9e902c5f | ||
|
|
bc8c8789cc | ||
|
|
2feeabf152 | ||
|
|
d4872509dd | ||
|
|
9bc50b5398 | ||
|
|
cfc58f705f | ||
|
|
384de5c620 | ||
|
|
cedfd975e2 | ||
|
|
4e9297cf67 | ||
|
|
de21b151ee | ||
|
|
3d100bc3c8 | ||
|
|
2115c4554f | ||
|
|
66397b1305 | ||
|
|
a142161b9e | ||
|
|
b0ecbaf63e | ||
|
|
1219f25708 | ||
|
|
7e95339909 | ||
|
|
ba06eb24e5 | ||
|
|
438e95e616 | ||
|
|
0b9a56c266 | ||
|
|
9297c3e7f0 | ||
|
|
7b818e8904 | ||
|
|
abcce47423 | ||
|
|
6fec095bca | ||
|
|
ed46708b99 | ||
|
|
97436e9cea | ||
|
|
f5a7fb89ca | ||
|
|
af9e544f90 | ||
|
|
326f154558 | ||
|
|
6721093b91 | ||
|
|
f727cde8f8 | ||
|
|
0dad4477f6 | ||
|
|
e5b72f8747 | ||
|
|
e624b7fdb8 | ||
|
|
8ad75e9d18 | ||
|
|
12919c030f | ||
|
|
a9044c620f | ||
|
|
a7c8301ed9 | ||
|
|
df02cd6e91 | ||
|
|
a54975a7b3 | ||
|
|
37658cffa8 | ||
|
|
e2cba8113c | ||
|
|
b9c3a943cc | ||
|
|
0b4204dabe | ||
|
|
ec4a1aa023 | ||
|
|
66bbccb993 | ||
|
|
f7ccf2077d | ||
|
|
33464aece1 | ||
|
|
9cbe29a824 | ||
|
|
42fc25450c | ||
|
|
dd855a189d | ||
|
|
dc5c5acd4a | ||
|
|
da76731ec0 | ||
|
|
616f0f9928 | ||
|
|
87fd564920 | ||
|
|
16508b0a96 | ||
|
|
51810b536a | ||
|
|
2b45c4c071 | ||
|
|
7bfce54886 | ||
|
|
b070b0242c | ||
|
|
170a8ae3ee | ||
|
|
302cb694e1 | ||
|
|
9c7e8bd721 | ||
|
|
b01b4dd734 | ||
|
|
87bcc1c39d | ||
|
|
00d9da2654 | ||
|
|
e0ba4d2476 | ||
|
|
747d9f1133 | ||
|
|
df95743889 | ||
|
|
1760032295 | ||
|
|
66ddbc6be3 | ||
|
|
8073e9ef40 | ||
|
|
1d0a84e65b | ||
|
|
be386e8840 | ||
|
|
4804c2ad5c | ||
|
|
642c83e437 | ||
|
|
1d5279ee38 | ||
|
|
f05ed056cd | ||
|
|
0dbb2b6253 | ||
|
|
7f02ff8917 | ||
|
|
82274422fb | ||
|
|
bd959c47b2 | ||
|
|
db387eab2f | ||
|
|
c2c8c2a5f3 | ||
|
|
06543a6705 | ||
|
|
c1f665c086 | ||
|
|
c9bcd7f276 | ||
|
|
9b88757d4f | ||
|
|
476a271e03 | ||
|
|
912e220713 | ||
|
|
1fbc98c703 | ||
|
|
5bc856308b | ||
|
|
dd4c68b300 | ||
|
|
551f2a7136 | ||
|
|
fcc5191dd5 | ||
|
|
9a804c5ed2 | ||
|
|
a17fbe0124 | ||
|
|
801da15675 | ||
|
|
48abf8702a | ||
|
|
9d55206c69 | ||
|
|
c2fe651b16 | ||
|
|
ff81498f73 | ||
|
|
1d380f8665 | ||
|
|
d4aada9248 | ||
|
|
e0da240903 | ||
|
|
4cd05d0777 | ||
|
|
207570d6c6 | ||
|
|
df520db5bd | ||
|
|
6a725d590b | ||
|
|
f00784fce8 | ||
|
|
495ab59f09 | ||
|
|
7d69745da2 | ||
|
|
a32f9ab50f | ||
|
|
6922e89582 | ||
|
|
c8b583b848 | ||
|
|
78fa0a6d02 | ||
|
|
a6fc0360ac | ||
|
|
151fd07c20 | ||
|
|
34ba810c40 | ||
|
|
f67563902c | ||
|
|
fe9172c70e | ||
|
|
8c6b2a3021 | ||
|
|
3ee53333ca | ||
|
|
694a9ef746 | ||
|
|
62f88f3141 | ||
|
|
bc0faf3a27 | ||
|
|
bd3e9c7d06 | ||
|
|
b2412b46d8 | ||
|
|
ff6f59339b | ||
|
|
2cb7691e37 | ||
|
|
24d15b1444 | ||
|
|
4d39b7233c | ||
|
|
897f0d06fe | ||
|
|
95cafd87b1 | ||
|
|
5856d46c6c | ||
|
|
31d3aa2782 | ||
|
|
799a0e8efd | ||
|
|
028dc5a7bd | ||
|
|
27a1ccf257 | ||
|
|
22abe602ed | ||
|
|
524c6678a6 | ||
|
|
a74744d914 | ||
|
|
fe1e459d62 | ||
|
|
c1430d3c78 | ||
|
|
e41d7bbceb | ||
|
|
b5438d5e74 | ||
|
|
ed4f4574e7 | ||
|
|
9eea0dc202 | ||
|
|
188aef4d97 | ||
|
|
12ca5b702e | ||
|
|
1669d55c67 | ||
|
|
4c9d6774aa | ||
|
|
28b906abb2 | ||
|
|
1e6fd5eb7c | ||
|
|
155bf542f8 | ||
|
|
c9f43f70d6 | ||
|
|
3ec46a61db | ||
|
|
e663dc10fd | ||
|
|
2f9e91b9e1 | ||
|
|
8509f841ba | ||
|
|
1138bff9e4 | ||
|
|
6461d8f245 | ||
|
|
90bf845504 | ||
|
|
0c348a754f | ||
|
|
106607b967 | ||
|
|
8f7acb24bf | ||
|
|
1dbe198aa3 | ||
|
|
33247f4fab | ||
|
|
8a28399cb4 | ||
|
|
102047efa8 | ||
|
|
fbc19a3d1a | ||
|
|
aae1c32030 | ||
|
|
0301c4751d | ||
|
|
926f35e7e8 | ||
|
|
1d299ecd00 | ||
|
|
2a9e9e491f | ||
|
|
fe39f816b3 | ||
|
|
473b72f98c | ||
|
|
73498f60bb | ||
|
|
938965c9d2 | ||
|
|
64b3e7d792 | ||
|
|
9cdeb188d8 | ||
|
|
2efc68fcdc | ||
|
|
0e68254f26 | ||
|
|
4e9408b048 | ||
|
|
0213ee0371 | ||
|
|
f5ebb0a1cf | ||
|
|
9b12008cd1 | ||
|
|
5db4f95687 | ||
|
|
6fe30eb104 | ||
|
|
1709426f3f | ||
|
|
838f90c8d7 | ||
|
|
ef01659b5b | ||
|
|
dc3099abe8 | ||
|
|
fc098eaa15 | ||
|
|
17747f5e6a | ||
|
|
8cb9515e0b | ||
|
|
1faed086a6 | ||
|
|
121f5afa5e | ||
|
|
a058b34461 | ||
|
|
e39e25f637 | ||
|
|
96bf8e0429 | ||
|
|
a5db48b268 | ||
|
|
4cf90d07ac | ||
|
|
f7a864b15e | ||
|
|
bd1fb03888 | ||
|
|
d48b4c0432 | ||
|
|
9e37f09bea | ||
|
|
b077a832b5 | ||
|
|
f6e7b851d2 | ||
|
|
cd40658ada | ||
|
|
fcc9677c89 | ||
|
|
c6fa750dc8 | ||
|
|
39ae4107f2 | ||
|
|
250a3f7ce6 | ||
|
|
e9e453cc2d | ||
|
|
6efc7363b8 | ||
|
|
a45f60a969 | ||
|
|
3615770fbe | ||
|
|
9ccf4fd7df | ||
|
|
c89225bd68 | ||
|
|
7e5556f530 | ||
|
|
f8c8487ac3 | ||
|
|
cae261ed84 | ||
|
|
aabd5f7a4f | ||
|
|
77795a6c40 | ||
|
|
3673c08687 | ||
|
|
97b71af97c | ||
|
|
a623f44b84 | ||
|
|
39a4574aae | ||
|
|
ccc5f260c4 | ||
|
|
83400e5edc | ||
|
|
02ae0fc5ae | ||
|
|
47694dac77 | ||
|
|
ea6e798b0e | ||
|
|
16204e7dcd | ||
|
|
efa9057d30 | ||
|
|
c11deb3936 | ||
|
|
d5e23a92e5 | ||
|
|
d195ccbbf2 | ||
|
|
61322d3ccb | ||
|
|
2d6bec06dc | ||
|
|
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 | ||
|
|
10eb872ec5 | ||
|
|
95a2815ea6 | ||
|
|
38e698aab9 | ||
|
|
bea0787a10 | ||
|
|
8ae37f2c09 | ||
|
|
44287db830 | ||
|
|
591d8e1f01 | ||
|
|
e0c17bc26c | ||
|
|
90c3d79967 | ||
|
|
c6d9112581 | ||
|
|
95bb656222 | ||
|
|
431f55fd4c | ||
|
|
9a1b5a19d7 | ||
|
|
8116d356cd | ||
|
|
72235d84a4 | ||
|
|
77600ecbcf | ||
|
|
4fa0168437 | ||
|
|
53664157fc | ||
|
|
86fca5f20b | ||
|
|
3eb55ffee4 | ||
|
|
c031dfcb18 | ||
|
|
cffb8971b3 | ||
|
|
1323ae9191 | ||
|
|
b4fa4db0d6 | ||
|
|
200dae2390 | ||
|
|
7bfd7ced5d | ||
|
|
f098a1a6f1 | ||
|
|
f0e7c038ed | ||
|
|
2ea378e63d | ||
|
|
44a8f78212 | ||
|
|
1a4e3bcab6 | ||
|
|
be2db73504 | ||
|
|
236250c344 | ||
|
|
3595cbde04 | ||
|
|
8685fd23e8 | ||
|
|
1728a31105 | ||
|
|
3293374843 | ||
|
|
e9030b6d2d | ||
|
|
a4b5951dda | ||
|
|
e0a1b43518 | ||
|
|
77c87bc228 | ||
|
|
8838cf6b50 | ||
|
|
521cfd6afd | ||
|
|
a44eb9cd3d | ||
|
|
4c11ecfaa3 | ||
|
|
81a13478a4 | ||
|
|
593f8ed232 | ||
|
|
38fc48e893 | ||
|
|
ef3cbdda13 | ||
|
|
6a2127e3f8 | ||
|
|
28822295d5 | ||
|
|
bd1e2ca828 | ||
|
|
dc4ea2a94d | ||
|
|
5eb9821920 | ||
|
|
0b35796814 | ||
|
|
2ede9a5cae | ||
|
|
895e5bbbd1 | ||
|
|
1b5a7b0218 | ||
|
|
908edc961f | ||
|
|
115683ca39 | ||
|
|
b1a0f07c3a | ||
|
|
a97677018e | ||
|
|
152ce12fc3 | ||
|
|
c250754496 | ||
|
|
bff24c157c | ||
|
|
64a79b77cb | ||
|
|
adda7e7b87 | ||
|
|
b6f2167e02 | ||
|
|
a4ea571e8e | ||
|
|
704a70169a | ||
|
|
59f2fd488e | ||
|
|
7226c6d943 | ||
|
|
6f72be02b1 | ||
|
|
bd683637c0 | ||
|
|
d2ca839d0a | ||
|
|
3fd769a8a1 | ||
|
|
a87400c0ea | ||
|
|
a80248b068 | ||
|
|
217f691850 | ||
|
|
2a451a411a | ||
|
|
85ecfa47a4 | ||
|
|
4c0e851424 | ||
|
|
cc4442b140 | ||
|
|
2cfd48f095 | ||
|
|
b5772892df | ||
|
|
28ce1fd358 | ||
|
|
6697810b99 | ||
|
|
860fc5464b | ||
|
|
6754be9cd9 | ||
|
|
bc105a9038 | ||
|
|
439ca40645 | ||
|
|
4b723c2c53 | ||
|
|
b9a27b27da | ||
|
|
a84f077a93 | ||
|
|
4a6d43eb62 | ||
|
|
8e2dddb959 | ||
|
|
b8c98bebfe | ||
|
|
d697f904dc | ||
|
|
5b9fed246f | ||
|
|
7bb7b9719a | ||
|
|
33b6270467 | ||
|
|
b34a096b23 | ||
|
|
dd114f4bf5 | ||
|
|
e12e75639a | ||
|
|
9311335206 | ||
|
|
b7684cd544 | ||
|
|
f36b480df8 | ||
|
|
4c54492b4e | ||
|
|
c2b42e9e38 | ||
|
|
cd40c2072c | ||
|
|
4c3da19911 | ||
|
|
c8bd68190e | ||
|
|
706cf5c1db | ||
|
|
e8232c6be1 | ||
|
|
7ac3b37d14 | ||
|
|
22af9bc18e | ||
|
|
ecfff11982 | ||
|
|
870acb09e0 | ||
|
|
4affdb6338 | ||
|
|
0ca360f610 | ||
|
|
ea32cfc6ee | ||
|
|
56ae0eca2e | ||
|
|
f9ea811781 | ||
|
|
0aa5a5f465 | ||
|
|
a1b6645633 | ||
|
|
552ee47540 | ||
|
|
ac3fdd0d62 | ||
|
|
86357937f5 |
20
CHANGELOG
@@ -208,3 +208,23 @@ Catalan updates, thanks to Jaume Badiella.
|
||||
Added additional protected against Shellshock exploits made via the Webmin webserver.
|
||||
---- Changes since 1.710 ----
|
||||
SSL v2 and v3 are now disabled by default at Webmin install time, to block the POODLE attack. They can be re-enabled on the SSL Encryption page of the Webmin Configuration module.
|
||||
---- Changes since 1.720 ----
|
||||
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.
|
||||
---- Changes since 1.760 ----
|
||||
For new installs, switched the location of data files in many modules to /var/webmin instead of /etc/webmin.
|
||||
|
||||
2
README
@@ -1,4 +1,4 @@
|
||||
Webmin Version 1.720
|
||||
Webmin Version 1.780
|
||||
--------------------
|
||||
Webmin is a web-based interface for system administration for Unix.
|
||||
Using any browser that supports tables and forms, you can setup user
|
||||
|
||||
@@ -462,7 +462,10 @@ else {
|
||||
my $deny = $user->{'deny'} || "";
|
||||
$deny =~ s/:/;/g;
|
||||
&print_tempfile($fh,
|
||||
"$user->{'name'}:$user->{'pass'}:$user->{'sync'}:$user->{'cert'}:",
|
||||
$user->{'name'},":",
|
||||
$user->{'pass'},":",
|
||||
($user->{'sync'} || ""),":",
|
||||
($user->{'cert'} || ""),":",
|
||||
($allow ? "allow $allow" :
|
||||
$deny ? "deny $deny" : ""),":",
|
||||
join(" ", @times),":",
|
||||
@@ -647,8 +650,10 @@ else {
|
||||
if ($l =~ /^([^:]+):([^:]*)/ && $1 eq $username) {
|
||||
&add_old_password($user, "$2", \%miniserv);
|
||||
&print_tempfile($fh,
|
||||
"$user->{'name'}:$user->{'pass'}:",
|
||||
"$user->{'sync'}:$user->{'cert'}:",
|
||||
$user->{'name'},":",
|
||||
$user->{'pass'},":",
|
||||
($user->{'sync'} || ""),":",
|
||||
($user->{'cert'} || ""),":",
|
||||
($allow ? "allow $allow" :
|
||||
$deny ? "deny $deny" : ""),":",
|
||||
join(" ", @times),":",
|
||||
@@ -732,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'});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ use warnings;
|
||||
require './acl-lib.pl';
|
||||
our (%in, %text, %config, %access, $base_remote_user);
|
||||
&ReadParse();
|
||||
&error_setup($text{'udeletes_err'});
|
||||
&error_setup($in{'joingroup'} ? $text{'udeletes_jerr'} : $text{'udeletes_err'});
|
||||
$access{'delete'} || &error($text{'delete_ecannot'});
|
||||
|
||||
# Validate inputs
|
||||
@@ -14,7 +14,7 @@ my @d = split(/\0/, $in{'d'});
|
||||
@d || &error($text{'udeletes_enone'});
|
||||
foreach my $user (@d) {
|
||||
&can_edit_user($user) || &error($text{'delete_euser'});
|
||||
if ($base_remote_user eq $user) {
|
||||
if ($base_remote_user eq $user && !$in{'joingroup'}) {
|
||||
&error($text{'delete_eself'});
|
||||
}
|
||||
my $uinfo = &get_user($user);
|
||||
|
||||
@@ -421,6 +421,7 @@ twofactor_title=2-Faktor-Authentifizierung
|
||||
udeletes_enone=Nichts ausgewählt
|
||||
udeletes_ereadonly=Einer der ausgewählten Benutzer ist als nicht bearbeitbar markiert.
|
||||
udeletes_err=Konnte Benutzer nicht löschen
|
||||
udeletes_jerr=Fehler beim Nutzer zu Gruppe hinzufügen
|
||||
udeletes_ok=Benutzer löschen
|
||||
udeletes_rusure=Sind Sie sicher, daß Sie die $1 ausgewählten Benutzer löschen möchten? Sämtliche Benutzer- und zugehörige Sicherheitseinstellungen gehen definitiv und nicht wiederherstellbar verloren.
|
||||
udeletes_title=Benutzer löschen
|
||||
|
||||
@@ -362,6 +362,7 @@ rbac_ecpan=You do not have access to Webmin's Perl Modules page in order to inst
|
||||
rbac_ok=RBAC integration is available on this system, and can be enabled on a per-user basis on the Edit Webmin User page.
|
||||
|
||||
udeletes_err=Failed to delete users
|
||||
udeletes_jerr=Failed to add users to group
|
||||
udeletes_enone=None selected
|
||||
udeletes_title=Delete Users
|
||||
udeletes_rusure=Are you sure you want to delete the $1 selected users? All of their access control settings and user details will be lost.
|
||||
|
||||
@@ -42,6 +42,8 @@ if ($in{'old'}) {
|
||||
$old || &error($text{'edit_egone'});
|
||||
$user{'proto'} = $old->{'proto'};
|
||||
$user{'id'} = $old->{'id'};
|
||||
$user{'twofactor_provider'} = $old->{'twofactor_provider'};
|
||||
$user{'twofactor_id'} = $old->{'twofactor_id'};
|
||||
}
|
||||
else {
|
||||
$access{'create'} || &error($text{'save_ecreate'});
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
do "acl-lib.pl";
|
||||
if (!$main::done_foreign_require{"acl","acl-lib.pl"}) {
|
||||
do "acl-lib.pl";
|
||||
}
|
||||
our (%config, $config_directory);
|
||||
|
||||
# useradmin_create_user(&details)
|
||||
@@ -81,7 +83,7 @@ if ($u && $u->{'sync'}) {
|
||||
}
|
||||
|
||||
|
||||
if ($_[0]->{'user'} ne $_[0]->{'olduser'}) {
|
||||
if ($_[0]->{'olduser'} && $_[0]->{'user'} ne $_[0]->{'olduser'}) {
|
||||
# Check other users' acl module acls
|
||||
foreach my $u (&list_users()) {
|
||||
my %uaccess = &get_module_acl($u->{'name'});
|
||||
|
||||
@@ -6,7 +6,7 @@ use WebminCore;
|
||||
# Output HTML for editing global security options
|
||||
sub acl_security_form
|
||||
{
|
||||
local $o = $_[0];
|
||||
my ($o) = @_;
|
||||
|
||||
# Root directory for file browser
|
||||
print &ui_table_row($text{'acl_root'},
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -971,11 +971,15 @@ else { return ( [ $in{$_[0]} ] ); }
|
||||
sub select_input
|
||||
{
|
||||
my($i, @sel);
|
||||
my $selv;
|
||||
for($i=3; $i<@_; $i++) {
|
||||
$_[$i] =~ /^([^,]*),(.*)$/;
|
||||
push(@sel, [$2, $1, (lc($2) eq lc($_[0]) || !defined($_[0]) && lc($2) eq lc($_[2]) ? "selected" : "") ]);
|
||||
if (lc($2) eq lc($_[0]) || !defined($_[0]) && lc($2) eq lc($_[2])) {
|
||||
$selv = $2;
|
||||
}
|
||||
push(@sel, [ $2, $1 || " " ]);
|
||||
}
|
||||
return &ui_select($_[1], undef, \@sel, 1);
|
||||
return &ui_select($_[1], $selv, \@sel, 1);
|
||||
}
|
||||
|
||||
# parse_choice(name, default)
|
||||
@@ -1101,19 +1105,20 @@ close(USERS);
|
||||
# some context (global, virtual, directory or htaccess)
|
||||
sub config_icons
|
||||
{
|
||||
local ($ctx, $prog) = @_;
|
||||
local($m, $func, $e, %etype, $i, $c);
|
||||
foreach $m (sort { $a cmp $b } (keys %httpd_modules)) {
|
||||
$func = $m."_directives";
|
||||
if (defined(&$func)) {
|
||||
foreach $e (&$func($httpd_modules{$m})) {
|
||||
if ($e->{$_[0]}) { $etype{$e->{'type'}}++; }
|
||||
if ($e->{$ctx}) { $etype{$e->{'type'}}++; }
|
||||
}
|
||||
}
|
||||
}
|
||||
local (@titles, @links, @icons);
|
||||
for($i=0; $text{"type_$i"}; $i++) {
|
||||
if ($etype{$i} && $access_types{$i}) {
|
||||
push(@links, $_[1]."type=$i");
|
||||
push(@links, $prog."type=$i");
|
||||
push(@titles, $text{"type_$i"});
|
||||
push(@icons, "images/type_icon_$i.gif");
|
||||
}
|
||||
@@ -1843,7 +1848,8 @@ if ($config{'link_dir'}) {
|
||||
opendir(LINKDIR, $config{'link_dir'});
|
||||
foreach my $f (readdir(LINKDIR)) {
|
||||
if ($f ne "." && $f ne ".." &&
|
||||
(&resolve_links($config{'link_dir'}."/".$f) eq $file ||
|
||||
(&simplify_path(
|
||||
&resolve_links($config{'link_dir'}."/".$f)) eq $file ||
|
||||
$short eq $f)) {
|
||||
&unlink_logged($config{'link_dir'}."/".$f);
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@ show_list=0
|
||||
httpd_dir=/etc/httpd
|
||||
httpd_path=/usr/sbin/httpd
|
||||
mime_types=/etc/mime.types
|
||||
start_cmd=service httpd start
|
||||
apply_cmd=service httpd reload
|
||||
stop_cmd=service httpd stop
|
||||
start_cmd=systemctl start httpd.service
|
||||
apply_cmd=systemctl reload httpd.service
|
||||
stop_cmd=systemctl stop httpd.service
|
||||
show_order=0
|
||||
max_servers=100
|
||||
test_config=1
|
||||
|
||||
@@ -2,9 +2,9 @@ show_list=0
|
||||
httpd_dir=/etc/httpd
|
||||
httpd_path=/usr/sbin/httpd
|
||||
mime_types=/etc/mime.types
|
||||
start_cmd=service httpd start
|
||||
apply_cmd=service httpd reload
|
||||
stop_cmd=service httpd stop
|
||||
start_cmd=systemctl start httpd.service
|
||||
apply_cmd=systemctl reload httpd.service
|
||||
stop_cmd=systemctl stop httpd.service
|
||||
show_order=0
|
||||
max_servers=100
|
||||
test_config=1
|
||||
|
||||
@@ -2,9 +2,9 @@ show_list=0
|
||||
httpd_dir=/etc/httpd
|
||||
httpd_path=/usr/sbin/httpd
|
||||
mime_types=/etc/mime.types
|
||||
start_cmd=service httpd start
|
||||
apply_cmd=service httpd reload
|
||||
stop_cmd=service httpd stop
|
||||
start_cmd=systemctl start httpd.service
|
||||
apply_cmd=systemctl reload httpd.service
|
||||
stop_cmd=systemctl stop httpd.service
|
||||
show_order=0
|
||||
max_servers=100
|
||||
test_config=1
|
||||
|
||||
@@ -3,9 +3,9 @@ httpd_dir=/srv/www
|
||||
httpd_conf=/etc/apache2/httpd.conf
|
||||
mime_types=/etc/apache2/mime.types
|
||||
httpd_path=/usr/sbin/httpd2-prefork
|
||||
start_cmd=/etc/init.d/apache2 start
|
||||
stop_cmd=/etc/init.d/apache2 stop
|
||||
apply_cmd=/etc/init.d/apache2 restart
|
||||
start_cmd=service apache2 start
|
||||
stop_cmd=service apache2 stop
|
||||
apply_cmd=service apache2 restart
|
||||
show_order=0
|
||||
max_servers=100
|
||||
test_config=1
|
||||
|
||||
@@ -366,6 +366,7 @@ if ($_[0]->{'version'} < 2.0) {
|
||||
}
|
||||
else {
|
||||
# Apache 2.0 just uses Listen directives
|
||||
local %doneport;
|
||||
for($i=0; $i<@blist; $i++) {
|
||||
if (&check_ip6address($blist[$i])) {
|
||||
$blist[$i] = "[".$blist[$i]."]";
|
||||
@@ -375,6 +376,10 @@ else {
|
||||
}
|
||||
elsif ($blist[$i] ne "*") { push(@l, $blist[$i]); }
|
||||
else { push(@l, "*:$plist[$i]"); }
|
||||
if ($doneport{$l[$#l]}++) {
|
||||
# Same listen given twice
|
||||
&error(&text('core_eduplisten', $l[$#l]));
|
||||
}
|
||||
if ($_[0]->{'version'} >= 2.4 && $slist[$i]) {
|
||||
$l[$#l] .= " ".$slist[$i];
|
||||
}
|
||||
|
||||
@@ -74,15 +74,14 @@ if (!$in{'name_def'}) {
|
||||
!$in{'root'} || &allowed_auth_file($in{'root'}) ||
|
||||
&error(&text('cvirt_eroot3', $in{'root'}));
|
||||
|
||||
if ($in{'root'} && !-d $in{'root'}) {
|
||||
if ($in{'root'} && !-e $in{'root'}) {
|
||||
# create the document root
|
||||
mkdir($in{'root'}, 0755) ||
|
||||
&error(&text('cvirt_eroot2', $in{'root'}, $!));
|
||||
$user = &find_directive("User", $conf);
|
||||
$group = &find_directive("Group", $conf);
|
||||
$uid = $user ? getpwnam($user) : 0;
|
||||
$gid = $group ? getgrnam($group) : 0;
|
||||
chown($uid, $gid, $in{'root'});
|
||||
$user || &error($text{'cvirt_eroot4'});
|
||||
&set_ownership_permissions($user, $group, undef, $in{'root'});
|
||||
}
|
||||
|
||||
# find file to add to
|
||||
@@ -215,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' => '+Indexes' },
|
||||
] });
|
||||
'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,11 @@ foreach $v (@virt) {
|
||||
if (&find_vdirective("SSLEngine", $vm, $conf, 1) eq "on") {
|
||||
$prot = "https";
|
||||
}
|
||||
elsif ($port == 443) {
|
||||
$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 +373,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";
|
||||
@@ -417,8 +424,6 @@ if ($access{'create'}) {
|
||||
&ui_checkbox("nv", 1, $text{'index_nv'}, 1)."<br>" : "").
|
||||
&ui_checkbox("listen", 1, $text{'index_listen'}, 1));
|
||||
|
||||
# Work out sensible default port
|
||||
|
||||
# Port
|
||||
print &ui_table_row($text{'index_port'},
|
||||
&choice_input(@nvports ? 2 : 0,
|
||||
@@ -434,8 +439,16 @@ if ($access{'create'}) {
|
||||
&ui_checkbox("adddir", 1, $text{'index_adddir'}, 1));
|
||||
|
||||
# Server name
|
||||
print &ui_table_row($text{'index_name'},
|
||||
&opt_input("", "name", $text{'index_auto'}, 30));
|
||||
if ($access{'virts'} eq '*') {
|
||||
print &ui_table_row($text{'index_name'},
|
||||
&opt_input("", "name", $text{'index_auto'}, 30));
|
||||
}
|
||||
else {
|
||||
# Require that non-root users enter a server name, or else it
|
||||
# will be impossible to grant access to the new virtualhost
|
||||
print &ui_table_row($text{'index_name'},
|
||||
&ui_textbox("name", "", 30));
|
||||
}
|
||||
|
||||
# Add to file
|
||||
print &ui_table_row($text{'index_file'},
|
||||
|
||||
@@ -67,6 +67,7 @@ cvirt_ename='$1' no
|
||||
cvirt_eroot1=Has d'introduir l'arrel dels documents
|
||||
cvirt_eroot2=No s'ha pogut crear el directori '$1': $2
|
||||
cvirt_eroot3=No tens permís per utilitzar el directori arrel '$1'
|
||||
cvirt_eroot4=No hi ha cap usuari definit a la configuracio d'Apache
|
||||
cvirt_etaken=Ja existeix un servidor virtual amb el mateix nom i el mateix port
|
||||
cvirt_efile=No s'ha pogut escriure a $1: $2
|
||||
cvirt_emissing=S'ha afegit el nou servidor virtual a $1, però Apache no està utilitzant aquest fitxer. Comprova la <a href='$2'>configuració del mòdul</a> i assegura't que el 'Fitxer o directori on s'afegeixen els servidors virtuals' és correcte.
|
||||
@@ -359,11 +360,14 @@ core_ehlimit=$1 no
|
||||
core_dport=Port per defecte:
|
||||
core_address=Adreça
|
||||
core_port=Port
|
||||
core_portname=Protocol
|
||||
core_protoany=<Qualsevol>
|
||||
core_listen=Escolta les adreces i els ports
|
||||
core_eaddress='$1' no és una adreça vàlida
|
||||
core_eport='$1' no és un port vàlid
|
||||
core_eoneaddr=Has d'especificar almenys una adreça
|
||||
core_edefport=Port per defecte invàlid
|
||||
ore_eduplisten=L'adreça d'escolta $1 està llistada dos cops
|
||||
core_multi=Múltiples peticions per connexió
|
||||
core_ekeep='$1' no és un nombre de <i>keepalives</i> vàlid
|
||||
core_ltwice=Consulta-ho dos cops
|
||||
|
||||
@@ -186,6 +186,7 @@ core_edefchar=Fehlender oder ungültiger Zeichensatz für die Dokumente
|
||||
core_edefmime=Der Standard MIME-Typ muss in der Form type/subtype sein
|
||||
core_edefport=Ungültiger Standardport
|
||||
core_edirlog=Fehlerprotokolldatei ist nicht im erlaubten Verzeichnis
|
||||
core_eduplisten=Lausche Adresse $1 zweimal aufgeführt
|
||||
core_eerror='$1' kein gültiger Fehlercode
|
||||
core_eerrordir=Das Verzeichnis für das Error-Logfile existiert nicht
|
||||
core_efilelog=Ungültige Fehlerprotokolldatei
|
||||
@@ -343,6 +344,7 @@ cvirt_eport='$1' ist kein gültiger Port
|
||||
cvirt_eroot1=Sie müssen ein Dokument-Root angeben
|
||||
cvirt_eroot2=Fehler beim Anlegen des Verzeichnisses '$1' : $2
|
||||
cvirt_eroot3=Sie sind nicht berechtigt das Root-Verzeichnis '$1' zu benutzen
|
||||
cvirt_eroot4=Keine Benutzer in der Apache-Konfiguration definiert
|
||||
cvirt_err=Fehler beim Anlegen des virtuellen Server
|
||||
cvirt_etaken=Ein virtuellen Server mit dem selben Namen und demselben Port existiert bereits
|
||||
default_serv=Standard Server
|
||||
|
||||
@@ -67,6 +67,7 @@ cvirt_ename='$1' is not a valid server name
|
||||
cvirt_eroot1=You must enter a document root
|
||||
cvirt_eroot2=Failed to create directory '$1' : $2
|
||||
cvirt_eroot3=You are not allowed to use the root directory '$1'
|
||||
cvirt_eroot4=No User defined in the Apache configuration
|
||||
cvirt_etaken=A virtual server with the same name and port already exists
|
||||
cvirt_efile=Failed to write to $1 : $2
|
||||
cvirt_emissing=The new virtual server was added to $1, but this file is not used by Apache. Check the <a href='$2'>module configuration</a> and make sure the 'File or directory to add virtual servers to' is correct.
|
||||
@@ -366,6 +367,7 @@ core_eaddress='$1' is not a valid address
|
||||
core_eport='$1' is not a valid port
|
||||
core_eoneaddr=You must specify at least one address to listen on
|
||||
core_edefport=Invalid default port
|
||||
core_eduplisten=Listen address $1 is listed twice
|
||||
core_multi=Multiple requests per connection
|
||||
core_ekeep='$1' is not a valid number of keepalives
|
||||
core_ltwice=Lookup twice
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -186,6 +186,7 @@ core_edefchar=Brakuj
|
||||
core_edefmime=Domyślny typ MIME musi być postaci typ/podtyp
|
||||
core_edefport=Niepoprawny port domyślny
|
||||
core_edirlog=Brak pliku logowania błędów w dozwolonym katalogu
|
||||
core_eduplisten=Adres $1 jest wymieniony dwukrotnie
|
||||
core_eerror='$1' nie jest poprawnym kodem błędu
|
||||
core_eerrordir=Katalog dla pliku logu błędów nie istnieje
|
||||
core_efilelog=Niepoprawny plik logowania błędów
|
||||
@@ -343,6 +344,7 @@ cvirt_eport='$1' nie jest poprawnym portem
|
||||
cvirt_eroot1=Musisz wpisać katalog główny dla dokumentów
|
||||
cvirt_eroot2=Utworzenie katalogu '$1' nie powiodło się: $2
|
||||
cvirt_eroot3=Nie masz uprawnień do używania głównego katalogu '$1'
|
||||
cvirt_eroot4=Brak zdefiniowanego użytkownika w konfiguracji Apache
|
||||
cvirt_err=Utworzenie serwera wirtualnego nie powiodło się
|
||||
cvirt_etaken=Serwer wirtualny o takiej nazwie już istnieje na tym porcie
|
||||
default_serv=serwera domyślnego
|
||||
|
||||
1001
apache/lang/ru.UTF-8
Normal file
@@ -38,7 +38,7 @@ authg_none=
|
||||
vserv_delete=Удалить виртуальный сервер
|
||||
authu_edit=Редактирование пользователя
|
||||
restart_err=Ошибка при применении изменений
|
||||
virt_header=Для "$1"
|
||||
virt_header=Для $1
|
||||
htaccess_title=Файлы параметров для каждого каталога
|
||||
htaccess_edir='$1' не является допустимым каталогом
|
||||
type_0=Процессы и лимиты
|
||||
@@ -193,7 +193,7 @@ index_addr=
|
||||
restart_eunknown=Неизвестная причина
|
||||
index_type=Тип
|
||||
index_vdef=Обрабатывает все запросы, не обслуженные другими виртуальными серверами.
|
||||
htindex_header=Для "$1"
|
||||
htindex_header=Для $1
|
||||
authg_header=В файле $1
|
||||
virt_return=меню сервера
|
||||
htindex_create=Создание параметров для каждого файла
|
||||
@@ -908,3 +908,94 @@ core_minspare=
|
||||
core_satisfy=Клиенты должны удовлетворять требованиям
|
||||
mod_userdir_except=Всем пользователям, исключая
|
||||
manual_file=Редактирование директив в файле:
|
||||
core_eerrordir=Каталог для log file не существует
|
||||
acl_names=Отредактировать имена серверов?
|
||||
index_descglobal=Изменения этих параметров применяться ко всему серверу Apache, включая все виртуальные хосты.
|
||||
mod_auth_digest_edomain=Отсутствует URL-адреса и пути в одном домене
|
||||
mod_apachessl_forcessl=Сила доступа SSL/notSSL?
|
||||
mod_ssl_cafile=Файл сертификата авторизации
|
||||
log_mods=Изменена конфигурация модулей Apache
|
||||
acl_apply=Применить изменения?
|
||||
htaccess_file=Существующие параметры файлов
|
||||
mod_ssl_epassph=Не введен пароль SSL
|
||||
index_delete=Удалить выбранные серверы
|
||||
mod_apachessl_sesstimeout=Время в секундах, которое ключ сеанса будет кэшироваться
|
||||
core_portname=Протокол
|
||||
index_proxy=Карта URL
|
||||
mod_band_ebw='$1' не является допустимым ограничением пропускной способности
|
||||
acl_dirs0=Все
|
||||
core_minor=Только незначительная версия
|
||||
htaccess_err=Не удалось создать файл параметров
|
||||
delete_ecannot2=Вам не разрешено редактировать сервер $1
|
||||
mod_ssl_ecafile=Отсутствует файл ключа сертификата авторизации
|
||||
eafter=Сбой проверки конфигурации: $1 изменения не были сохранены.
|
||||
index_tablist=Существующие виртуальные хосты
|
||||
mod_php_admin_value=Значения конфигурации PHP Admin
|
||||
acl_dirs=Имеющиеся директивы Apache <br><font size=-1>(С учетом типов ограничить выше) </font>
|
||||
index_any0=Конкретный адрес...
|
||||
index_return2=Глобальная настройка
|
||||
mod_proxy_seconds=секунд
|
||||
index_newaddr=Обрабатывать запросы на адрес
|
||||
log_virts_delete=Удаленные виртуальные серверы $1
|
||||
log_manual=Вручную редактировать файл конфигурации $1
|
||||
mod_alias_edest2=Вы не можете использовать в $2 назначения '$1'
|
||||
mod_log_config_edir=Каталог для файла журнала '$1' не существует
|
||||
mod_band_enable=Включить ограничение скорости?
|
||||
index_apache=Веб-сервер Apache
|
||||
index_tabcreate=Создание виртуального хоста
|
||||
mod_ssl_builtin=Запрос при запуске
|
||||
mod_apachessl_ecacherundir=Отсутствует рабочий каталог gcache
|
||||
index_any1=То что не обработано другим сервером
|
||||
mod_band_ent=IP-адрес или домен
|
||||
acl_dirs2=Все, кроме перечисленных...
|
||||
mod_apachessl_nov2=Отключить SSL версии 2
|
||||
mod_band_max=Максимальное количество одновременных подключений
|
||||
manual_etest=Обнаружена ошибка конфигурации файла: $1
|
||||
defines_list=Определены параметры
|
||||
mod_band_size=Минимальный размер файла
|
||||
manual_editfile=Отредактировать конфигурационный файл:
|
||||
index_crnow=Создать сейчас
|
||||
delete_enone=Ничего не выбрано
|
||||
mod_dav_etimeout=Несуществующее или недопустимое время ожидания DAV
|
||||
cvirt_emissing=Был добавлен новый виртуальный сервер в $1, но этот файл не используется Apache. Проверьте <a href='$2'>модуль конфигурации</a> и убедитесь, что 'файл или каталог для добавления виртуальных серверов' является правильным.
|
||||
mod_php_admin_flag=Флаги конфигурации PHP Admin
|
||||
mod_band_client=Для клиентов
|
||||
index_any2=Любой адрес
|
||||
index_desclist=Список ниже показывает все определенные виртуальные хосты Apache, к которым в настоящее время у вас есть доступ. Опция <b>Сервер по умолчанию</ b> определяет параметры, которые применяются ко всем другим виртуальным хостам, если не переопределить.
|
||||
index_adddir=Allow access to this directory
|
||||
core_major=Только основная версия
|
||||
mod_apachessl_notssl=Запретить доступ по протоколу SSL
|
||||
mod_band_emax=Несуществующее или недопустимое количество одновременных подключений
|
||||
mod_band_epulse=Отсутствующий или недопустимый интервал между ограниченным пакетов
|
||||
index_url=URL
|
||||
index_tabglobal=Глобальная настройка
|
||||
mod_apachessl_esesstimeout=Время в секундах должно быть целым
|
||||
mod_proxy_not=Нет
|
||||
mod_band_bw=Предел (байт/сек)
|
||||
dir_proxyall=Все запросы через прокси
|
||||
delete_ecannot=Вы не можете удалять серверы
|
||||
manual_switch=Редактировать
|
||||
core_virtaddr_star=Включить все адреса
|
||||
mod_log_config_ifset=Если задать
|
||||
mod_band_esize=Размер файла отсутствует или недопустим для ограничение пропускной способности '$1'
|
||||
mod_band_bandwidth=Ограничения полосы пропускания клиента
|
||||
mod_apachessl_ramdomfilee=Socket
|
||||
acl_aliasdir=Лимит алиасов в каталоге
|
||||
mod_apachessl_eramdomfileb=Байт должен быть целым числом
|
||||
mod_auth_digest_domain=URL-адреса и пути в одном домене
|
||||
acl_dirs1=Только перечисленные...
|
||||
mod_band_all=Все
|
||||
mod_dav_active=Включен протокол WebDAV?
|
||||
delete_err=Не удалось удалить виртуальные серверы
|
||||
mod_auth_basic_dbm=База данных DBM
|
||||
index_fmode1d=Новый файл в каталоге виртуальных серверов $1
|
||||
mod_band_eclient=Отсутствующий или недопустимый IP клиента, сети или домен для ограничения пропускной способности '$1'
|
||||
mod_band_pulse=Интервал между ограниченным пакетов (в мс)
|
||||
mod_ssl_ecerton=Если протокол SSL включен, файл сертификата должен быть выбран
|
||||
index_desccreate=Эта форма может использоваться для добавления нового виртуального хоста Apache, который обслуживает контент из указанного каталога в ответ на запросы на конкретный IP-адрес или имя хоста.
|
||||
mod_auth_digest_al=Алгоритм хэширования
|
||||
mod_auth_basic_file=Текстовый файл
|
||||
cvirt_eroot4=Ни один пользователь, определенный в конфигурации Apache
|
||||
__norefs=Русский
|
||||
mod_apachessl_ramdomfilef=Файл
|
||||
index_view=Открытые...
|
||||
|
||||
1883
apache/lang/ru_SU
@@ -37,7 +37,7 @@ return (2, $_[2], $rv);
|
||||
|
||||
%alias_statmap = ("permanent", 301, "temp", 302,
|
||||
"seeother", 303, "gone", 410);
|
||||
$url_regexp = '^(http:\/\/|ftp:\/\/|gopher:|https:\/\/|mailto:|telnet:)(\S+)$';
|
||||
$url_regexp = '^(http:\/\/|ftp:\/\/|gopher:|https:\/\/|mailto:|telnet:|\/)(\S+)$';
|
||||
|
||||
# alias_status_input(array, name, title)
|
||||
sub alias_status_input
|
||||
|
||||
@@ -18,6 +18,10 @@ if ($in{'virt'} && $access{'types'} eq '*') {
|
||||
"name" => $text{'virt_edit'},
|
||||
"link" => "manual_form.cgi?virt=$in{'virt'}" };
|
||||
}
|
||||
if ($v->{'value'} =~ /:80/ && $v->{'value'} !~ /:443/) {
|
||||
# Hide SSL icon for non-SSL sites
|
||||
$access_types{14} = 0;
|
||||
}
|
||||
&config_icons("virtual", "edit_virt.cgi?virt=$in{'virt'}&", $sw_icon,
|
||||
$ed_icon ? $ed_icon : ());
|
||||
|
||||
|
||||
@@ -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 ..
|
||||
|
||||
@@ -43,6 +43,7 @@ edit_mods=Modu
|
||||
edit_mods2=Moduły do przywrócenia
|
||||
edit_nofiles=Pliki konfiguracyjne serwera
|
||||
edit_other=Inne pliki z listy...
|
||||
edit_other2=Inne pliki do przywrócenia
|
||||
edit_post=Polecenie po wykonaniu kopii
|
||||
edit_pre=Polecenie przed wykonaniem kopii
|
||||
edit_return=kopia zapasowa z
|
||||
@@ -99,6 +100,7 @@ nice_upload=za
|
||||
restore_doing=Uruchamianie przywracania plików konfiguracyjnych modułu z $1 ...
|
||||
restore_done=... zakończono. Przywrócono $1 plików.
|
||||
restore_done2=... pliki zawarte w kopii zapasowej:
|
||||
restore_emods=Nie wybrano modułów lub innych plików
|
||||
restore_err=Błąd przywracania
|
||||
restore_failed=... z błędem! $1
|
||||
restore_testing=Wyodrębnianie zawartości kopii zapasowej z $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;
|
||||
}
|
||||
|
||||
@@ -14,3 +14,4 @@ bacula_dir=Katalog konfiguracyjny Bacula,0
|
||||
bextract=Pełna ścieżka do komendy <tt>bextract</tt>,0
|
||||
bls=Pełna ścieżka do komendy <tt>bls</tt>,0
|
||||
btape=Pełna ścieżka do komendy <tt>btape</tt>,0
|
||||
init_start=Uruchom i zatrzymaj Bacula używając,1,1-Skryptów Init,0-polecenia <tt>bacula</tt>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -198,6 +198,7 @@ fileset_gzip=Poziom Gzip $1
|
||||
fileset_gzipdef=<Domyślny poziom kompresji>
|
||||
fileset_header=Szczegóły zestawu plików kopii zapasowej
|
||||
fileset_include=Pliki i katalogi do skopiowania
|
||||
fileset_lzo=Kompresja LZO
|
||||
fileset_md5=MD5
|
||||
fileset_name=Nazwa zestawu plików
|
||||
fileset_none=Brak
|
||||
@@ -282,7 +283,8 @@ index_status=Status proces
|
||||
index_stop=Zatrzymaj Bacula
|
||||
index_stopdesc=Kliknij ten przycisk, aby zamknąć usługę Bacula.
|
||||
index_up=Włączona
|
||||
index_version=Bacula $1
|
||||
index_versionbacula=Bacula $1
|
||||
index_versionbareos=Bareos $1
|
||||
job_after=Komenda po wykonaniu zadania
|
||||
job_before=Komenda przed wykonaniem zadania
|
||||
job_cafter=Komenda po wykonaniu zadania (na kliencie)
|
||||
@@ -456,6 +458,9 @@ poolstatus_volumes=Wolumeny w wybranej puli
|
||||
proc_bacula-dir=Usługa Menedżera Bacula
|
||||
proc_bacula-fd=Usługa pliku
|
||||
proc_bacula-sd=Usługa magazynu
|
||||
proc_bareos-dir=Daemon zarządcy (Director) Bacula
|
||||
proc_bareos-fd=Plik daemon
|
||||
proc_bareos-sd=Demon magazynowania Bacula
|
||||
restart_err=Błąd restartowania Bacula
|
||||
restore_all=--Wszyscy klienci w grupie--
|
||||
restore_client=Przywróć na klienta lub grupę
|
||||
|
||||
@@ -5,9 +5,10 @@ longdesc=Configure Bacula to perform backups and restores manually or on schedul
|
||||
desc_ca=Sistema de Còpies de Seguretat Bacula
|
||||
desc_nl=Bacula Backup Systeem
|
||||
desc_de=Bacula Backup System
|
||||
desc_pl=System kopii zapasowej Bacula
|
||||
desc_pl=Bacula - system kopii zapasowej
|
||||
desc_pl.UTF-8=System kopii zapasowej Bacula
|
||||
desc_ru=СиÑ<C2B8>тема резервного копированиÑ<C2B8> Bacula
|
||||
desc_ms_MY=Sistem backup Bacula
|
||||
longdesc_ms_MY=Konfigurasi Bacula untuk melaksanakan salinan dan mengembalikan secara manual atau mengikut jadual, untuk satu atau banyak sistem.
|
||||
longdesc_de=Konfiguriert Bacula um Sicherungen zu erstellen und manuell wiederherzustellen oder nach Plan, für eine oder viele Systeme.
|
||||
longdesc_de=Konfiguriert Bacula um Sicherungen zu erstellen und manuell oder nach Plan wiederherzustellen, für eine oder viele Systeme.
|
||||
longdesc_pl=Skonfiguruj Bacula do przeprowadzania kopii zapasowej i przywracania rêcznie lub wed³ug harmonogramu na jednym lub wielu systemach.
|
||||
|
||||
@@ -116,7 +116,8 @@ foreach $clientjob (@clients) {
|
||||
}
|
||||
}
|
||||
&sysprint($h->{'infh'}, "done\n");
|
||||
$rv = &wait_for($h->{'outfh'}, 'OK to run.*:', 'no files selected');
|
||||
$rv = &wait_for($h->{'outfh'}, 'OK to run.*:', 'no files selected',
|
||||
'Select Restore Job.*:');
|
||||
print $wait_for_input;
|
||||
if ($rv == 0) {
|
||||
&sysprint($h->{'infh'}, "yes\n");
|
||||
@@ -124,6 +125,11 @@ foreach $clientjob (@clients) {
|
||||
elsif ($rv == 1) {
|
||||
&job_error($text{'restore_enofiles'});
|
||||
}
|
||||
elsif ($rv == 2) {
|
||||
&sysprint($h->{'infh'}, "1\n");
|
||||
&wait_for($h->{'outfh'}, 'OK to run.*:');
|
||||
&sysprint($h->{'infh'}, "yes\n");
|
||||
}
|
||||
else {
|
||||
&job_error($text{'backup_eok'});
|
||||
}
|
||||
|
||||
@@ -140,3 +140,9 @@ Added a module configuration option to use the SPF type for Sender Permitted Fro
|
||||
---- Changes since 1.660 ----
|
||||
Added a warning if the chroot directory that Webmin thinks BIND is using looks wrong.
|
||||
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.
|
||||
---- Changes since 1.770 ----
|
||||
Automatic creation and deletion of reverse records in partial delegation zones now works the same as in full reverse zones.
|
||||
|
||||
@@ -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'} = !defined($in{'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;
|
||||
|
||||
@@ -767,8 +767,11 @@ else {
|
||||
: &ip_to_arpa(join('.', @octs[0..$i]));
|
||||
$rev =~ s/\.$//g;
|
||||
foreach $z (@zl) {
|
||||
if ((lc($z->{'name'}) eq $rev ||
|
||||
lc($z->{'name'}) eq "$rev.") &&
|
||||
# Strip off prefix for partial reverse delegation
|
||||
my $zname = $z->{'name'};
|
||||
$zname =~ s/^(\d+)\/(\d+)\.//;
|
||||
if ((lc($zname) eq $rev ||
|
||||
lc($zname) eq "$rev.") &&
|
||||
$z->{'type'} eq "master") {
|
||||
# found the reverse master domain
|
||||
$revconf = $z;
|
||||
@@ -782,12 +785,7 @@ else {
|
||||
if ($revconf) {
|
||||
$revfile = &absolute_path($revconf->{'file'});
|
||||
@revrecs = &read_zone_file($revfile, $revconf->{'name'});
|
||||
if ($ipv6) {
|
||||
$addr = &net_to_ip6int($_[0], 128);
|
||||
}
|
||||
else {
|
||||
$addr = &ip_to_arpa($_[0]);
|
||||
}
|
||||
$addr = &make_reverse_name($_[0], $ipv6 ? "AAAA" : "A", $revconf, 128);
|
||||
foreach $rr (@revrecs) {
|
||||
if ($rr->{'type'} eq "PTR" &&
|
||||
lc($rr->{'name'}) eq lc($addr)) {
|
||||
@@ -847,6 +845,26 @@ if ($fwdconf) {
|
||||
return ($fwdconf, $fwdfile, $fwdrec);
|
||||
}
|
||||
|
||||
# make_reverse_name(ip, type, &reverse-zone, ipv6-bits)
|
||||
# Returns the reverse record name for an IP
|
||||
sub make_reverse_name
|
||||
{
|
||||
local ($ip, $type, $revconf, $bits) = @_;
|
||||
if ($type eq "A") {
|
||||
my $arpa = &ip_to_arpa($ip);
|
||||
if ($revconf->{'name'} =~ /^(\d+)\/(\d+)\.(.*)/) {
|
||||
# Partial reverse delegation zone - last octet is actually
|
||||
# inside it
|
||||
my @arpa = split(/\./, $arpa);
|
||||
return $arpa[0].".".$revconf->{'name'}.".";
|
||||
}
|
||||
return $arpa;
|
||||
}
|
||||
else {
|
||||
return &net_to_ip6int($ip, $bits);
|
||||
}
|
||||
}
|
||||
|
||||
# can_edit_zone(&zone, [&view] | &cachedzone)
|
||||
# Returns 1 if some zone can be edited
|
||||
sub can_edit_zone
|
||||
@@ -879,8 +897,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 "view_".$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 +1154,58 @@ 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
|
||||
print &ui_table_row($text{'value_NSEC3PARAM1'},
|
||||
&ui_select("value0", $v[0] || 1,
|
||||
[ [ 1, "SHA1" ] ], 1, 0, 1));
|
||||
|
||||
print &ui_table_row($text{'value_NSEC3PARAM2'},
|
||||
&ui_select("value1", $v[1],
|
||||
[ [ 0, $text{'value_delegated'} ],
|
||||
[ 1, $text{'value_notdelegated'} ] ]));
|
||||
|
||||
print &ui_table_row($text{'value_NSEC3PARAM3'},
|
||||
&ui_textbox("value2", $v[2], 4));
|
||||
|
||||
print &ui_table_row($text{'value_NSEC3PARAM5'},
|
||||
&ui_textbox("value4", $v[4], 20));
|
||||
|
||||
}
|
||||
else {
|
||||
# All other types just have a text box
|
||||
print &ui_table_row($text{'value_other'},
|
||||
@@ -1938,6 +2020,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'}) {
|
||||
@@ -2550,12 +2633,13 @@ $format =~ s/ZONE/$subs/g;
|
||||
return $file = $base."/".$format;
|
||||
}
|
||||
|
||||
# create_on_slaves(zone, master-ip, file, [&hostnames], [local-view])
|
||||
# create_on_slaves(zone, master-ip, file, [&hostnames], [local-view],
|
||||
# [&extra-slave-ips])
|
||||
# Creates the given zone on all configured slave servers, and returns a list
|
||||
# of errors
|
||||
sub create_on_slaves
|
||||
{
|
||||
local ($zone, $master, $file, $hosts, $localview) = @_;
|
||||
local ($zone, $master, $file, $hosts, $localview, $moreslaves) = @_;
|
||||
local %on = map { $_, 1 } @$hosts;
|
||||
&remote_error_setup(\&slave_error_handler);
|
||||
local $slave;
|
||||
@@ -2581,6 +2665,9 @@ foreach $slave (@slaves) {
|
||||
grep { $_ ne $slave } @slaves;
|
||||
}
|
||||
push(@otherslaves, split(/\s+/, $config{'extra_slaves'}));
|
||||
if ($moreslaves) {
|
||||
push(@otherslaves, @$moreslaves);
|
||||
}
|
||||
|
||||
# Work out the view
|
||||
my $view;
|
||||
@@ -2753,7 +2840,7 @@ $slave_error = $_[0];
|
||||
|
||||
sub get_forward_record_types
|
||||
{
|
||||
return ("A", "NS", "CNAME", "MX", "HINFO", "TXT", "SPF", "WKS", "RP", "PTR", "LOC", "SRV", "KEY", $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
|
||||
@@ -3188,11 +3275,12 @@ foreach my $key (@keys) {
|
||||
|
||||
# Remove records
|
||||
local @recs = &read_zone_file($fn, $dom);
|
||||
local $tools = &have_dnssec_tools_support();
|
||||
for(my $i=$#recs; $i>=0; $i--) {
|
||||
if ($recs[$i]->{'type'} eq 'NSEC' ||
|
||||
$recs[$i]->{'type'} eq 'NSEC3' ||
|
||||
$recs[$i]->{'type'} eq 'RRSIG' ||
|
||||
$recs[$i]->{'type'} eq 'NSEC3PARAM' ||
|
||||
$recs[$i]->{'type'} eq 'NSEC3PARAM' && $tools ||
|
||||
$recs[$i]->{'type'} eq 'DNSKEY') {
|
||||
&delete_record($fn, $recs[$i]);
|
||||
}
|
||||
@@ -3600,10 +3688,11 @@ sub dt_sign_zone
|
||||
|
||||
# Remove DNSSEC records and save the unsigned zone file
|
||||
@recs = &read_zone_file($z, $dom);
|
||||
local $tools = &have_dnssec_tools_support();
|
||||
for(my $i=$#recs; $i>=0; $i--) {
|
||||
if ($recs[$i]->{'type'} eq 'NSEC' ||
|
||||
$recs[$i]->{'type'} eq 'NSEC3' ||
|
||||
$recs[$i]->{'type'} eq 'NSEC3PARAM' ||
|
||||
$recs[$i]->{'type'} eq 'NSEC3PARAM' && $tools ||
|
||||
$recs[$i]->{'type'} eq 'RRSIG' ||
|
||||
$recs[$i]->{'type'} eq 'DNSKEY') {
|
||||
&delete_record($z, $recs[$i]);
|
||||
@@ -3679,10 +3768,11 @@ sub dt_resign_zone
|
||||
|
||||
# Remove DNSSEC records and save the unsigned zone file
|
||||
@recs = &read_zone_file($z, $dom);
|
||||
local $tools = &have_dnssec_tools_support();
|
||||
for(my $i=$#recs; $i>=0; $i--) {
|
||||
if ($recs[$i]->{'type'} eq 'NSEC' ||
|
||||
$recs[$i]->{'type'} eq 'NSEC3' ||
|
||||
$recs[$i]->{'type'} eq 'NSEC3PARAM' ||
|
||||
$recs[$i]->{'type'} eq 'NSEC3PARAM' && $tools ||
|
||||
$recs[$i]->{'type'} eq 'RRSIG' ||
|
||||
$recs[$i]->{'type'} eq 'DNSKEY') {
|
||||
&delete_record($z, $recs[$i]);
|
||||
@@ -3870,10 +3960,11 @@ sub dt_delete_dnssec_state
|
||||
|
||||
# remove DNSSEC records from zonefile
|
||||
@recs = &read_zone_file($z, $dom);
|
||||
local $tools = &have_dnssec_tools_support();
|
||||
for(my $i=$#recs; $i>=0; $i--) {
|
||||
if ($recs[$i]->{'type'} eq 'NSEC' ||
|
||||
$recs[$i]->{'type'} eq 'NSEC3' ||
|
||||
$recs[$i]->{'type'} eq 'NSEC3PARAM' ||
|
||||
$recs[$i]->{'type'} eq 'NSEC3PARAM' && $tools ||
|
||||
$recs[$i]->{'type'} eq 'RRSIG' ||
|
||||
$recs[$i]->{'type'} eq 'DNSKEY') {
|
||||
&delete_record($z, $recs[$i]);
|
||||
@@ -3897,19 +3988,32 @@ sub get_ds_record
|
||||
{
|
||||
my ($zone) = @_;
|
||||
my $zonefile;
|
||||
my $dom;
|
||||
if ($zone->{'values'}) {
|
||||
# Zone object
|
||||
local $f = &find("file", $zone->{'members'});
|
||||
my $f = &find("file", $zone->{'members'});
|
||||
$zonefile = $f->{'values'}->[0];
|
||||
$dom = $zone->{'values'}->[0];
|
||||
}
|
||||
else {
|
||||
# Zone name object
|
||||
$zonefile = $zone->{'file'};
|
||||
$dom = $zone->{'name'};
|
||||
}
|
||||
if (&has_command("dnssec-dsfromkey")) {
|
||||
# Generate with a command
|
||||
my $out = &backquote_command("dnssec-dsfromkey -f ".quotemeta(&make_chroot(&absolute_path($zonefile)))." ZONE 2>/dev/null");
|
||||
return undef if ($?);
|
||||
$out =~ s/\r|\n//g;
|
||||
return $out;
|
||||
}
|
||||
else {
|
||||
# From dsset- file
|
||||
my $keydir = &get_keys_dir($zone);
|
||||
my $out = &read_file_contents($keydir."/dsset-".$dom.".");
|
||||
$out =~ s/\r|\n$//g;
|
||||
return $out;
|
||||
}
|
||||
my $out = &backquote_command("dnssec-dsfromkey -f ".quotemeta(&make_chroot(&absolute_path($zonefile)))." ZONE 2>/dev/null");
|
||||
return undef if ($?);
|
||||
$out =~ s/\r|\n//g;
|
||||
return $out;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -16,7 +16,7 @@ rev_def=Reverse-Update ist,1,0-An gemäß Standard,1-Aus gemä&#
|
||||
rev_must=Eine Reverse-Zone muss existieren?,1,1-Ja,0-Nein
|
||||
support_aaaa=DNS-Unterstützung für IPv6-Adressen,1,0-Nein,1-Ja
|
||||
allow_comments=Erlaube Kommentare zu Datensätzen,1,1-Ja,0-Nein
|
||||
allow_wild=Erlaube Wildcards,1,1-Ja,0-Nein
|
||||
allow_wild=Erlaube Wildcards?,1,1-Ja,0-Nein
|
||||
allow_underscore=Erlaube Unterstriche in Record-Namen?,1,1-Ja,0-Nein
|
||||
short_names=Konvertiere Record-Namen in Kanonische Form?,1,0-Ja,1-Nein
|
||||
extra_forward=Extra Eintragungen für Forward-Zonen,0
|
||||
|
||||
@@ -10,10 +10,14 @@ $zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
|
||||
$zconf = &zone_to_config($zone);
|
||||
|
||||
$access{'master'} || &error($text{'mcreate_ecannot'});
|
||||
$file = &find("file", $zconf->{'members'});
|
||||
$file = &find_value("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("");
|
||||
|
||||
|
||||
@@ -22,3 +22,4 @@ delegation=1
|
||||
slaves=1
|
||||
findfree=1
|
||||
dnssec=1
|
||||
inviews=*
|
||||
|
||||
@@ -50,8 +50,7 @@ else {
|
||||
|
||||
if ($orevrec && &can_edit_reverse($orevconf) &&
|
||||
$fulloldname eq $orevrec->{'values'}->[0] &&
|
||||
($r->{'type'} eq "A" &&
|
||||
$r->{'values'}->[0] eq &arpa_to_ip($orevrec->{'name'}) ||
|
||||
($r->{'type'} eq "A" ||
|
||||
$r->{'type'} eq "AAAA" &&
|
||||
&expandall_ip6($r->{'values'}->[0]) eq &expandall_ip6(&ip6int_to_net($orevrec->{'name'})))) {
|
||||
&lock_file(&make_chroot($orevrec->{'file'}));
|
||||
|
||||
@@ -19,28 +19,36 @@ $typedesc = $text{"recs_$in{'type'}"} || $in{'type'};
|
||||
$type = $zone->{'type'};
|
||||
$file = $zone->{'file'};
|
||||
$form = 0;
|
||||
$newname = $in{'newname'} || ($in{'type'} eq 'DMARC' ? '_dmarc' : undef);
|
||||
if (!$access{'ro'} && $type eq 'master' && $in{'type'} ne 'ALL') {
|
||||
&record_input($in{'zone'}, $in{'view'}, $in{'type'}, $file, $dom,
|
||||
undef, undef, $in{'newname'}, $in{'newvalue'});
|
||||
undef, undef, $newname, $in{'newvalue'});
|
||||
$form++;
|
||||
$shown_create_form = 1;
|
||||
}
|
||||
|
||||
# Show search form
|
||||
print &ui_form_start("edit_recs.cgi");
|
||||
print &ui_hidden("zone", $in{'zone'}),"\n";
|
||||
print &ui_hidden("view", $in{'view'}),"\n";
|
||||
print &ui_hidden("type", $in{'type'}),"\n";
|
||||
print "<b>$text{'recs_find'}</b>\n";
|
||||
print &ui_textbox("search", $in{'search'}, 20),"\n";
|
||||
print &ui_submit($text{'recs_search'}),"<p>\n";
|
||||
print &ui_form_end();
|
||||
$form++;
|
||||
|
||||
if (!$config{'largezones'} || $in{'search'}) {
|
||||
# Get all records
|
||||
@allrecs = grep { !$_->{'generate'} && !$_->{'defttl'} }
|
||||
&read_zone_file($file, $dom);
|
||||
$nosearch = 1 if (!@allrecs);
|
||||
}
|
||||
|
||||
if (!$nosearch) {
|
||||
# Show search form
|
||||
print &ui_form_start("edit_recs.cgi");
|
||||
print &ui_hidden("zone", $in{'zone'}),"\n";
|
||||
print &ui_hidden("view", $in{'view'}),"\n";
|
||||
print &ui_hidden("type", $in{'type'}),"\n";
|
||||
print "<b>$text{'recs_find'}</b>\n";
|
||||
print &ui_textbox("search", $in{'search'}, 20),"\n";
|
||||
print &ui_submit($text{'recs_search'}),"<p>\n";
|
||||
print &ui_form_end();
|
||||
$form++;
|
||||
}
|
||||
|
||||
if (!$config{'largezones'} || $in{'search'}) {
|
||||
# Get all records
|
||||
if ($in{'search'}) {
|
||||
# Limit to records matching some search
|
||||
foreach $r (@allrecs) {
|
||||
@@ -74,7 +82,7 @@ else {
|
||||
if (@recs) {
|
||||
@recs = &sort_records(@recs);
|
||||
foreach $v (keys %text) {
|
||||
if ($v =~ /^value_([A-Z]+)(\d+)/) {
|
||||
if ($v =~ /^value_([A-Z0-9]+)(\d+)/) {
|
||||
$hmap{$1}->[$2-1] = $text{$v};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
After Width: | Height: | Size: 314 B |
BIN
bind8/images/NSEC3PARAM.gif
Normal file
|
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
|
||||
@@ -474,6 +505,8 @@ eipacl='$1' no
|
||||
acl_zones=Dominis que aquest usuari pot editar
|
||||
acl_zall=Totes les zones
|
||||
acl_zsel=Zones seleccionades...
|
||||
acl_inviews=Vistes sobre les quals aquest usuari pot editar dominis
|
||||
acl_toplevel=Fora de qualsevol vista
|
||||
acl_znsel=Totes excepte les zones seleccionades...
|
||||
acl_master=Pot crear zones mestres
|
||||
acl_slave=Pot crear zones esclaves/stub
|
||||
@@ -793,6 +826,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 +888,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
|
||||
|
||||
2243
bind8/lang/de
@@ -293,6 +293,11 @@ edit_espfip6='$1' is not a valid IPv6 address or IPv6/prefix to allow sending fr
|
||||
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_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
|
||||
@@ -369,8 +374,10 @@ type_NS=Name Server
|
||||
type_CNAME=Name Alias
|
||||
type_MX=Mail Server
|
||||
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
|
||||
@@ -387,12 +394,14 @@ 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
|
||||
edit_LOC=Location
|
||||
edit_SRV=Service Address
|
||||
edit_KEY=Public Key
|
||||
edit_NSEC3PARAM=DNSSEC Parameters
|
||||
|
||||
recs_defttl=Default TTL
|
||||
recs_A=Address
|
||||
@@ -403,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
|
||||
@@ -410,6 +420,7 @@ recs_LOC=Location
|
||||
recs_SRV=Service Address
|
||||
recs_ALL=All
|
||||
recs_KEY=Public Key
|
||||
recs_NSEC3PARAM=DNSSEC Parameters
|
||||
recs_delete=Delete Selected
|
||||
|
||||
value_A1=Address
|
||||
@@ -437,6 +448,14 @@ 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
|
||||
value_NSEC3PARAM4=Length of salt
|
||||
value_NSEC3PARAM5=Salt string
|
||||
value_delegated=Delegated zone
|
||||
value_notdelegated=Other zone
|
||||
value_other=Values (one per line)
|
||||
value_spfa=Allow sending from domain's IP address?
|
||||
value_spfmx=Allow sending from domain's MX hosts?
|
||||
@@ -456,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
|
||||
@@ -475,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?
|
||||
@@ -706,7 +739,7 @@ zonedef_this=System hostname ($1)
|
||||
zonedef_eprins=Missing or invalid default nameserver for master domains
|
||||
zonedef_dnssec=Create DNSSEC key and sign new zones?
|
||||
zonedef_dnssec_dt=Automate all DNSSEC operations (ignore other settings below)?
|
||||
zonedef_dne=Authenticated Denial of Existance Using
|
||||
zonedef_dne=Authenticated Denial of Existence Using
|
||||
zonedef_alg=Initial key algorithm
|
||||
zonedef_size=Initial key size
|
||||
zonedef_single=Number of keys to create
|
||||
@@ -793,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 ..
|
||||
@@ -852,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
|
||||
|
||||
@@ -107,6 +107,7 @@ controls_unixowner=W
|
||||
controls_unixperm=Uprawnienia FIFO
|
||||
controls_unixyes=Tak, użyj pliku $1
|
||||
convert_efile=Musisz określić plik strefy zanim będzie można zamienić strefę zapasową na podstawową.
|
||||
convert_efilesize=Plik rekordów $1 nie istnieje lub jest pusty
|
||||
convert_err=Błąd konwertowania strefy
|
||||
create_edom='$1' nie jest poprawną nazwą domeny
|
||||
create_edom2='$1' musi być domeną a nie siecią
|
||||
@@ -169,9 +170,14 @@ dt_conf_ezsklen=Brak lub nieprawid
|
||||
dt_conf_ezsklife=Brakujący lub nieprawidłowy ZSK rollover interval
|
||||
dt_conf_header=Parametry DNSSEC
|
||||
dt_conf_ksklength=Klucz podpisu Klucz długości
|
||||
dt_conf_ksklife=Interwał KSK Rollover
|
||||
dt_conf_nsec3=Użyć NSEC3 (tak/nie)?
|
||||
dt_conf_title=DNSSEC-Narzędzia automatyzacji
|
||||
dt_conf_zsklength=Długość klucza podpisywanej strefy
|
||||
dt_conf_zsklife=Interwał ZSK Rollover
|
||||
dt_enable_title=DNSSEC-Narzędzia automatyzacji
|
||||
dt_status_inKSKroll=W KSK Roll
|
||||
dt_status_inZSKroll=W ZSK Roll
|
||||
dt_status_signed=Podpisano
|
||||
dt_status_unsigned=Niepodpisano
|
||||
dt_status_waitfords=Czekanie na DS
|
||||
@@ -188,14 +194,19 @@ dt_zone_enocmd=dnssec-tools nie jest zainstalowany lub polecenie nie zosta
|
||||
dt_zone_enokey=Nie można odnaleźć wymaganych kluczy dla strefy $1
|
||||
dt_zone_err=Operacja DNSSEC nie powiodła się
|
||||
dt_zone_expandsep=Wyświetl aktualne szczegóły KSK i DS
|
||||
dt_zone_header=Opcje strefy DNSSEC-Tools
|
||||
dt_zone_kskroll=Roll KSK
|
||||
dt_zone_ksksep=Record KSK :
|
||||
edit_A=Adres
|
||||
edit_AAAA=Adres IPv6
|
||||
edit_CNAME=Alias nazwy
|
||||
edit_DMARC=DMARC
|
||||
edit_HINFO=Informacje o hoście
|
||||
edit_KEY=Klucz publiczny
|
||||
edit_LOC=Lokalizacja
|
||||
edit_MX=Serwer pocztowy
|
||||
edit_NS=Serwer DNS
|
||||
edit_NSEC3PARAM=Parametry DNSSEC
|
||||
edit_PTR=Adres odwrotny
|
||||
edit_RP=Osoba odpowiedzialna
|
||||
edit_SPF=Uprawnienia wysyłającego z (SPF)
|
||||
@@ -394,6 +405,7 @@ index_inview=W widoku $1
|
||||
index_local=Ustaw serwer DNS wyłącznie do użytku intranetowego (a nie internetowego)
|
||||
index_masscreate=Dodaj rekordy do zaznaczonych
|
||||
index_massdelete=Usuń zaznaczone
|
||||
index_massrdelete=Usuń rekordy w wybranych
|
||||
index_massupdate=Uaktualnij rekordy w zaznaczonych
|
||||
index_master=Podstawowa
|
||||
index_none=Nie zdefiniowano żadnej strefy DNS dla tego serwera
|
||||
@@ -472,6 +484,7 @@ log_modify_record_v=Zmodyfikowano $1 rekord $2 warto
|
||||
log_move=Przeniesiono strefę $1
|
||||
log_net=Zmiany adresów i topologii
|
||||
log_opts=Zmieniono domyślne ustawienia strefy $1
|
||||
log_rdelete_zones=Usunięto rekordy w $1 strefach
|
||||
log_resign=Klucz podpisywania DNSSEC dla strefy $1
|
||||
log_review=Zmieniono opcje widoku $1
|
||||
log_rndc=Ustawienia RNDC
|
||||
@@ -505,6 +518,7 @@ logging_default2=U
|
||||
logging_dyn=Poziom ogólny
|
||||
logging_ecannot=Nie masz uprawnień do konfiguracji logowania
|
||||
logging_efile=Brakująca nazwa pliku logowania
|
||||
logging_efile2=Plik loga musi mieć ścieżkę absolutną
|
||||
logging_ename='$1' nie jest poprawną nazwą kanału
|
||||
logging_err=Błąd zapisu opcji logowania
|
||||
logging_esize='$1' nie jest poprawnym rozmiarem logu
|
||||
@@ -592,6 +606,9 @@ master_edelete=Nie masz uprawnie
|
||||
master_edeletecannot=Nie masz uprawnień do usuwania stref
|
||||
master_eemail='$1' nie jest poprawnym adresem e-mail
|
||||
master_eexpiry='$1' nie jest poprawnym czasem wygaśnięcia
|
||||
master_egone=Strefa $1 nie istnieje w żadnym widoku
|
||||
master_egone2=Strefa $1 nie istnieje!
|
||||
master_egone3=Strefa $1 w widoku $2 nie istnieje
|
||||
master_einclude=Plik dodatkowego szablonu nie istnieje
|
||||
master_eip=Brakujący lub niepoprawny adres IP wzorca
|
||||
master_eiptmpl=Wartości z rekordów wzorcowych mogą być pobierane jedynie do rekordów adresowych
|
||||
@@ -656,6 +673,7 @@ master_user=Z formularza
|
||||
master_value=Wartość
|
||||
master_whois=Szukaj informacji w bazie WHOIS
|
||||
mcreate_auto=Automatyczny
|
||||
mcreate_dnssec_tools_enable=Włącz DNSSEC używając DNSSEC-Tools
|
||||
mcreate_dom=Nazwa domeny / Sieć
|
||||
mcreate_ecannot=Nie masz uprawnień do tworzenia strefy podstawowej
|
||||
mcreate_ednssec=Poprawnie utworzono rekord, ale wystąpił błąd DNSSEC: $1
|
||||
@@ -708,19 +726,34 @@ net_port=Numer portu
|
||||
net_recur=Pozwól na zapytania rekursyjne z
|
||||
net_saddr=Źródłowy adres IP dla zapytań
|
||||
net_sport=Źródłowy port dla zapytań
|
||||
net_taddr=Źródłowy adres IP dla transferów
|
||||
net_title=Adresy i topologia
|
||||
net_topol=Topologia wyboru serwera DNS
|
||||
net_tport=Źródłowy port dla transferów
|
||||
rdmass_all=Wszystkie rekordy tego typu
|
||||
rdmass_doing=Usuwanie rekordów w strefie $1 ..
|
||||
rdmass_done=.. usunięto $1 pasujących rekordów z $2.
|
||||
rdmass_ename=Nie wpisano nazwy rekordu do usunięcia
|
||||
rdmass_enone=Nie zaznaczono
|
||||
rdmass_err=Błąd usuwania rekordów w strefach
|
||||
rdmass_header=Masowe szczegóły kasowania rekordów
|
||||
rdmass_name=Nazwa rekordu do usunięcia
|
||||
rdmass_ok=Usuwanie rekordów
|
||||
rdmass_sel=Rekordy nazwane
|
||||
rdmass_title=Kasowanie rekordów w strefach
|
||||
rdmass_type=Typ rekordu do usunięcia
|
||||
rdmass_vall=Wszystkie pasujące nazwy i typy
|
||||
recs_A=Adres
|
||||
recs_AAAA=Adres IPv6
|
||||
recs_ALL=Wszystkie
|
||||
recs_CNAME=Aliasy nazw
|
||||
recs_DMARC=DMARC
|
||||
recs_HINFO=Informacje o hostach
|
||||
recs_KEY=Klucz publiczny
|
||||
recs_LOC=Lokalizacja
|
||||
recs_MX=Serwery pocztowe
|
||||
recs_NS=Serwery DNS
|
||||
recs_NSEC3PARAM=Parametry DNSSEC
|
||||
recs_PTR=Adresowanie odwrotne
|
||||
recs_RP=Osoba odpowiedzialna
|
||||
recs_SPF=Dozwolony nadawca
|
||||
@@ -914,6 +947,7 @@ type_KEY=Klucz publiczny
|
||||
type_LOC=Lokalizacja
|
||||
type_MX=Serwery pocztowe
|
||||
type_NS=Serwery DNS
|
||||
type_NSEC3PARAM=Parametry DNSSEC
|
||||
type_PTR=Adresowanie odwrotne
|
||||
type_RP=Osoba odpowiedzialna
|
||||
type_SPF=Dozwolony wysyłający z (SPF)
|
||||
@@ -940,6 +974,7 @@ umass_type=Rodzaj rekordu do uaktualnienia
|
||||
value_A1=Adres
|
||||
value_AAAA1=Adres IPv6
|
||||
value_CNAME1=Nazwa rzeczywista
|
||||
value_DMARC1=Specyfikacja DMARC
|
||||
value_HINFO1=Sprzęt
|
||||
value_HINFO2=System operacyjny
|
||||
value_KEY1=Flagi
|
||||
@@ -950,6 +985,8 @@ value_LOC1=Szeroko
|
||||
value_MX1=Priorytet
|
||||
value_MX2=Serwer poczty
|
||||
value_NS1=Serwer DNS
|
||||
value_NSEC3PARAM1=Algorytm haszowania
|
||||
value_NSEC3PARAM2=Flagi NSEC3
|
||||
value_PTR1=Nazwa hosta
|
||||
value_RP1=Adres e-mail
|
||||
value_RP2=Nazwa rekordu tekstowego
|
||||
@@ -962,6 +999,9 @@ value_TXT1=Informacja
|
||||
value_WKS1=Adres
|
||||
value_WKS2=Protokół
|
||||
value_WKS3=Usługi
|
||||
value_dmarcnop=Takie samo jak tej domeny
|
||||
value_dmarcnor=Nie wysyłaj
|
||||
value_notdelegated=Inne strefy
|
||||
value_other=Wartości (jedna w wierszu)
|
||||
value_spfa=Pozwolić na wysyłanie z adresu IP domeny?
|
||||
value_spfall=Akcja dla innych wysyłających
|
||||
@@ -1010,7 +1050,11 @@ weeks=tygodni
|
||||
whois_ecannot=Nie masz uprawnień do oglądania informacji WHOIS
|
||||
whois_header=Wynik polecenia $1 ..
|
||||
whois_title=Informacje z bazy WHOIS
|
||||
xfer_doing=Test transferu strefy z $1 ..
|
||||
xfer_done=.. od $1 : Gotowe
|
||||
xfer_failed=.. z $1 : niepowodzenie : $2
|
||||
xfer_none=Test transferu wygląda na udany, jednak nie pobrał żadnych rekordów!
|
||||
xfer_title=Test transferu strefy
|
||||
zonedef_alg=Algorytm klucza
|
||||
zonedef_cmaster=Czy sprawdzać nazwy w strefach podstawowych?
|
||||
zonedef_cresponse=Czy sprawdzać nazwy w odpowiedziach?
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -59,12 +59,11 @@ if ($in{'delete'}) {
|
||||
$in{'oldvalue0'}, $in{'origin'});
|
||||
$fulloldname = &convert_to_absolute(
|
||||
$in{'oldname'}, $in{'origin'});
|
||||
($orevconf, $orevfile, $orevrec) = &find_reverse($in{'oldvalue0'},
|
||||
$in{'view'});
|
||||
($orevconf, $orevfile, $orevrec) = &find_reverse(
|
||||
$in{'oldvalue0'}, $in{'view'});
|
||||
if ($in{'rev'} && $orevrec && &can_edit_reverse($orevconf) &&
|
||||
$fulloldname eq $orevrec->{'values'}->[0] &&
|
||||
($in{'type'} eq "A" &&
|
||||
$in{'oldvalue0'} eq &arpa_to_ip($orevrec->{'name'}) ||
|
||||
($in{'type'} eq "A" ||
|
||||
$in{'type'} eq "AAAA" &&
|
||||
&expandall_ip6($in{'oldvalue0'}) eq &expandall_ip6(&ip6int_to_net($orevrec->{'name'})))) {
|
||||
&lock_file(&make_chroot($orevrec->{'file'}));
|
||||
@@ -339,6 +338,59 @@ 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+$/ ||
|
||||
&error($text{'edit_ensec3value2'});
|
||||
$in{'value4'} =~ /^[a-zA-Z0-9\+\/]+$/ ||
|
||||
&error($text{'edit_ensec3value2'});
|
||||
$vals = join(" ", "(", $in{'value0'}, $in{'value1'},
|
||||
$in{'value2'}, length($in{'value4'}),
|
||||
$in{'value4'}, ")");
|
||||
}
|
||||
else {
|
||||
# For other record types, just save the lines
|
||||
$in{'values'} =~ s/\r//g;
|
||||
@@ -383,8 +435,8 @@ if ($in{'new'}) {
|
||||
'comment' => $in{'comment'} };
|
||||
if ($in{'rev'} && $revconf && &can_edit_reverse($revconf) &&
|
||||
$in{'value0'} !~ /\*/) {
|
||||
local $rname = $in{'type'} eq "A" ? &ip_to_arpa($in{'value0'})
|
||||
: &net_to_ip6int($in{'value0'});
|
||||
local $rname = &make_reverse_name($in{'value0'}, $in{'type'},
|
||||
$revconf);
|
||||
if ($revrec && $in{'rev'} == 2) {
|
||||
# Upate the existing reverse for the domain
|
||||
&lock_file(&make_chroot($revrec->{'file'}));
|
||||
@@ -448,10 +500,20 @@ else {
|
||||
&modify_record($r->{'file'}, $r, $name, $ttl,
|
||||
"IN", $in{'type'}, $vals, $in{'comment'});
|
||||
|
||||
# Build names for the new and old reverse records
|
||||
local ($rname, $orname);
|
||||
if ($revconf) {
|
||||
$rname = &make_reverse_name($in{'value0'}, $in{'type'},
|
||||
$revconf);
|
||||
}
|
||||
if ($orevconf) {
|
||||
$orname = &make_reverse_name($in{'oldvalue0'}, $in{'type'},
|
||||
$orevconf);
|
||||
}
|
||||
|
||||
if ($in{'rev'} && $orevrec && &can_edit_reverse($orevconf) &&
|
||||
$fulloldname eq $orevrec->{'values'}->[0] &&
|
||||
($in{'type'} eq "A" &&
|
||||
$in{'oldvalue0'} eq &arpa_to_ip($orevrec->{'name'}) ||
|
||||
($in{'type'} eq "A" ||
|
||||
$in{'type'} eq "AAAA" &&
|
||||
&expandall_ip6($in{'oldvalue0'}) eq &expandall_ip6(&ip6int_to_net($orevrec->{'name'})))) {
|
||||
# Updating the reverse record. Either the name, address
|
||||
@@ -464,7 +526,7 @@ else {
|
||||
if ($revconf eq $orevconf && &can_edit_reverse($revconf)) {
|
||||
# old and new in the same file
|
||||
&modify_record($orevrec->{'file'} , $orevrec,
|
||||
&net_to_ip6int(&ip_to_arpa($in{'value0'})),
|
||||
$rname,
|
||||
$orevrec->{'ttl'}, "IN", "PTR", $fullname,
|
||||
$in{'comment'});
|
||||
&bump_soa_record($orevfile, \@orrecs);
|
||||
@@ -473,7 +535,7 @@ else {
|
||||
elsif ($revconf && &can_edit_reverse($revconf)) {
|
||||
# old and new in different files
|
||||
&delete_record($orevrec->{'file'} , $orevrec);
|
||||
&create_record($revfile, &net_to_ip6int(&ip_to_arpa($in{'value0'})),
|
||||
&create_record($revfile, $rname,
|
||||
$orevrec->{'ttl'}, "IN", "PTR", $fullname,
|
||||
$in{'comment'});
|
||||
&bump_soa_record($orevfile, \@orrecs);
|
||||
@@ -495,7 +557,7 @@ else {
|
||||
# one.. create a new reverse record
|
||||
&lock_file(&make_chroot($revfile));
|
||||
@rrecs = &read_zone_file($revfile, $revconf->{'name'});
|
||||
&create_record($revfile, &net_to_ip6int(&ip_to_arpa($in{'value0'})),
|
||||
&create_record($revfile, $rname,
|
||||
$ttl, "IN", "PTR", $fullname, $in{'comment'});
|
||||
&bump_soa_record($revfile, \@rrecs);
|
||||
&sign_dnssec_zone_if_key($revconf, \@rrecs);
|
||||
|
||||
@@ -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);
|
||||
|
||||
1
blue-theme
Symbolic link
@@ -0,0 +1 @@
|
||||
gray-theme
|
||||
|
Before Width: | Height: | Size: 800 B |
|
Before Width: | Height: | Size: 768 B |
|
Before Width: | Height: | Size: 585 B |
|
Before Width: | Height: | Size: 559 B |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 449 B |
|
Before Width: | Height: | Size: 2.7 KiB |
@@ -1,44 +0,0 @@
|
||||
left_login=Identificació: $1
|
||||
left_home=Informació del Sistema
|
||||
left_oc=Esponsoritzat per OpenCountry
|
||||
left_feedback=Envia opinions
|
||||
left_search_webmin=Busca a Webmin:
|
||||
left_search_usermin=Busca a Usermin:
|
||||
left_search=Busca:
|
||||
left_logs=Visualitza els Registres del Mòdul
|
||||
left_others=Altres
|
||||
|
||||
right_header0=Informació del Sistema
|
||||
right_host=Nom de host del sistema
|
||||
right_os=Sistema operatiu
|
||||
right_login=Identificat com a:
|
||||
right_from=Identificat des de:
|
||||
right_webmin=Versió Webmin
|
||||
right_usermin=Versió Usermin
|
||||
right_cpu=Càrrega mitjana de la CPU
|
||||
right_cpuinfo=Informació del processador
|
||||
right_cputype=$5, $8 nuclis
|
||||
right_load=$1 (1 min) $2 (5 mins) $3 (15 mins)
|
||||
right_cpuuse=Ús de la CPU
|
||||
right_cpustats=$1% usuari, $2% nucli, $4% E/S, $3% desocupada
|
||||
right_real=Memòria real
|
||||
right_virt=Memòria virtual
|
||||
right_procs=Processos en execució
|
||||
right_disk=Espai local en disc
|
||||
right_used=$1 total, $2 utilitzat
|
||||
right_out=$1 de $2
|
||||
right_quota=Ús del disc i quota
|
||||
right_header5=Informació del Compte
|
||||
right_uquota=Quota de disc i ús
|
||||
right_time=Hora del sistema
|
||||
right_uptime=En execució durant
|
||||
right_updays=$1 dies, $2 hores, $3 minuts
|
||||
right_uphours=$1 hores, $2 minuts
|
||||
right_upmins=$1 minuts
|
||||
right_kernel=Nucli i CPU
|
||||
right_kernelon=$1 $2 a $3
|
||||
right_updates=Actualitzacions de paquets
|
||||
right_upok=Tots els paquets instal·lats estan actualitzats
|
||||
right_upneed=Hi ha $1 actualitzacions de paquets disponibles
|
||||
right_upsec=Hi ha $1 actualitzacions de paquets disponibles, de les quals $2 són actualitzacions de seguretat
|
||||
__norefs=1
|
||||
@@ -1,43 +0,0 @@
|
||||
__norefs=1
|
||||
left_feedback=Feedback versenden
|
||||
left_home=Systeminformation
|
||||
left_login=Login: $1
|
||||
left_logs=Zeige Modul Logs an
|
||||
left_oc=Gesponsert von OpenCountry
|
||||
left_others=Andere
|
||||
left_search=Suchen:
|
||||
left_search_usermin=Suche Usermin:
|
||||
left_search_webmin=Suche Webmin:
|
||||
right_cpu=CPU-Last im Durchschnitt
|
||||
right_cpuinfo=Prozessorinformation
|
||||
right_cpustats=$1% Benutzer, $2% Kernel, $4% IO, $3% Leerlauf
|
||||
right_cputype=$5, $8 cores
|
||||
right_cpuuse=CPU Auslastung
|
||||
right_disk=Lokaler Festplattenspeicher
|
||||
right_from=Eingeloggt von
|
||||
right_header0=Systeminformation
|
||||
right_header5=Accountinformationen
|
||||
right_host=System Hostname
|
||||
right_kernel=Kernel und CPU
|
||||
right_kernelon=$1 $2 auf $3
|
||||
right_load=$1 (1 Minute) $2 (5 Minuten) $3 (15 Minuten)
|
||||
right_login=Eingeloggt als
|
||||
right_os=Betriebssystem
|
||||
right_out=$1 von $2
|
||||
right_procs=Laufende Prozesse
|
||||
right_quota=Festplattenauslastung und Quota
|
||||
right_real=Realer Speicher
|
||||
right_time=Systemzeit
|
||||
right_updates=Paketupdates
|
||||
right_updays=$1 Tag(e), $2 Stunde(n), $3 Minute(n)
|
||||
right_uphours=$1 Stunde(n), $2 Minute(n)
|
||||
right_upmins=$1 Minute(n)
|
||||
right_upneed=$1 Paketupdates sind verfügbar
|
||||
right_upok=Alle installierten Pakete sind auf dem aktuellen Stand
|
||||
right_upsec=$1 Paketupdates sind verfügbar, von dem $2 Sicherheitsupdates sind
|
||||
right_uptime=System Laufzeit
|
||||
right_uquota=Festplatten Quota und Auslastung
|
||||
right_used=$1 gesamt, $2 benutzt
|
||||
right_usermin=Usermin Version
|
||||
right_virt=Virtueller Speicher
|
||||
right_webmin=Webmin Version
|
||||
@@ -1,31 +0,0 @@
|
||||
left_feedback=Envoyer un rapport
|
||||
left_home=Information Système
|
||||
left_login=Connexion : $1
|
||||
left_logs=Voir les journaux du module
|
||||
left_oc=Sponsorisé par "OpenCountry"
|
||||
left_others=Autres
|
||||
left_search=Rechercher :
|
||||
right_cpu=Moyennes de charge CPU
|
||||
right_cpuinfo=Information sur le CPU
|
||||
right_disk=Espace disque local
|
||||
right_header0=Information Système
|
||||
right_header5=Information sur le compte
|
||||
right_host=Nom d'hôte du système
|
||||
right_kernel=Noyau et CPU
|
||||
right_kernelon=$1 $2 sur $3
|
||||
right_load=$1 (1 min) $2 (5 mins) $3 (15 mins)
|
||||
right_os=Système d'exploitation
|
||||
right_out=$1 sur $2
|
||||
right_procs=Processus en cours
|
||||
right_real=Mémoire réelle
|
||||
right_time=Date et heure du système
|
||||
right_updates=Mises à jours de Paquet
|
||||
right_updays=$1 jours, $2 heures, $3 minutes
|
||||
right_uphours=$1 heures, $2 minutes
|
||||
right_upmins=$1 minutes
|
||||
right_uptime=Durèe de fonctionnement du système
|
||||
right_uquota=Utilisation et quota disque
|
||||
right_used=$1 total, $2 utilisé
|
||||
right_usermin=Version de Usermin
|
||||
right_virt=Mémoire virtuelle
|
||||
right_webmin=Version de Webmin
|
||||
@@ -1,23 +0,0 @@
|
||||
left_login=ログイン名: $1
|
||||
left_home=システム情報
|
||||
left_oc=提供:OpenCountry
|
||||
|
||||
right_header0=システム情報
|
||||
right_host=ホスト名
|
||||
right_os=オペレーティングシステム
|
||||
right_login=ログイン中のユーザ
|
||||
right_from=接続元
|
||||
right_webmin=Webmin バージョン
|
||||
right_usermin=Usermin バージョン
|
||||
right_cpu=CPU 平均負荷
|
||||
right_load=$1 (1分) $2 (5分) $3 (15分)
|
||||
right_real=実メモリ
|
||||
right_virt=仮想メモリ
|
||||
right_procs=走行プロセス数
|
||||
right_disk=ローカルディスク容量
|
||||
right_used=合計 $1 , 使用 $2
|
||||
right_out=$1 of $2
|
||||
right_quota=ディスク使用量とクオータ
|
||||
right_header5=アカウント情報
|
||||
right_uquota=ディスククオータと使用量
|
||||
right_time=サーバ上の時刻
|
||||
@@ -1,43 +0,0 @@
|
||||
__norefs=1
|
||||
left_feedback=Hantar Maklum Balas
|
||||
left_home=Maklumat Sistem
|
||||
left_login=Log masuk: $1
|
||||
left_logs=Lihat log modul
|
||||
left_oc=Ditaja oleh OpenCountry
|
||||
left_others=Lain-lain
|
||||
left_search=Carian:
|
||||
left_search_usermin=Carian Usermin:
|
||||
left_search_webmin=Carian Webmin
|
||||
right_cpu=Purata beban CPU
|
||||
right_cpuinfo=Maklumat pemproses
|
||||
right_cpustats=$1% user, $2% kernel, $4% IO, $3% idle
|
||||
right_cputype=$5, $8 teras
|
||||
right_cpuuse=Penggunaan CPU
|
||||
right_disk=Ruang disk setempat
|
||||
right_from=Telah log masuk dari
|
||||
right_header0=Maklumat Sistem
|
||||
right_header5=Maklumat Akaun
|
||||
right_host=Nama hos sistem
|
||||
right_kernel=Kernel dan CPU
|
||||
right_kernelon=$1 $2 pada $3
|
||||
right_load=$1 (1 min) $2 (5 min) $3 (15 min)
|
||||
right_login=Telah log masuk sebagai
|
||||
right_os=Sistem operasi
|
||||
right_out=$1 daripada $2
|
||||
right_procs=Proses yang dijalankan
|
||||
right_quota=Penggunaan disk dan kuota
|
||||
right_real=Memori sebenar
|
||||
right_time=Masa pada sistem
|
||||
right_updates=Pakej kemaskini
|
||||
right_updays=$1 hari, $2 jam, $3 minit
|
||||
right_uphours=$1 jam, $2 minit
|
||||
right_upmins=$1 minit
|
||||
right_upneed=terdapat $1 pakej kemaskini
|
||||
right_upok=Semua pakej yang dipasang adalah terkini
|
||||
right_upsec=terdapat $1 pakej kemaskini, dimana $2 darinya adalah kemaskini keselamatan
|
||||
right_uptime=Sistem uptime
|
||||
right_uquota=Kuota disk dan penggunaan
|
||||
right_used=total $1, $2 digunakan
|
||||
right_usermin=Versi Usermin
|
||||
right_virt=Ingatan maya
|
||||
right_webmin=Versi Webmin
|
||||
@@ -1,43 +0,0 @@
|
||||
__norefs=1
|
||||
left_feedback=Verstuur Opmerkingen
|
||||
left_home=Systeem Informatie
|
||||
left_login=Login: $1
|
||||
left_logs=Bekijk Module's Logs
|
||||
left_oc=Gesponserd door OpenCountry
|
||||
left_others=Andere
|
||||
left_search=Zoek:
|
||||
left_search_usermin=Zoek Usermin:
|
||||
left_search_webmin=Zoek Webmin:
|
||||
right_cpu=CPU belasting gemiddelde
|
||||
right_cpuinfo=Processor informatie
|
||||
right_cpustats=$1% gebruiker, $2% kernel, $4% IO, $3% slaapt
|
||||
right_cputype=$5, $8 cores
|
||||
right_cpuuse=CPU gebruik
|
||||
right_disk=Locale harddisk ruimte
|
||||
right_from=Ingelogd van
|
||||
right_header0=Systeem Informatie
|
||||
right_header5=Account Informatie
|
||||
right_host=Systeem hostnaam
|
||||
right_kernel=Kernel en CPU
|
||||
right_kernelon=$1 $2 op $3
|
||||
right_load=$1 (1 min) $2 (5 minuten) $3 (15 minuten)
|
||||
right_login=Ingelogd als
|
||||
right_os=Besturing systeem
|
||||
right_out=$1 van $2
|
||||
right_procs=Lopende processen
|
||||
right_quota=Harddisk gebruik en quota
|
||||
right_real=Echt geheugen
|
||||
right_time=Systeemtijd
|
||||
right_updates=Pakketten update's
|
||||
right_updays=$1 dagen, $2 uur, $3 minuten
|
||||
right_uphours=$1 uur, $2 minuten
|
||||
right_upmins=$1 minuten
|
||||
right_upneed=Er zijn $1 pakketten updates beschikbaar
|
||||
right_upok=Al de geinstalleerde pakketten zijn up to date
|
||||
right_upsec=Er zijn $1 pakketten updates beschikbaar, waarvan er $2 veiligheid updates zijn
|
||||
right_uptime=Systeem werkt nu
|
||||
right_uquota=Harddisk quota en gebruik
|
||||
right_used=$1 totaal, $2 gebruikt
|
||||
right_usermin=Usermin Versie
|
||||
right_virt=Virtueel geheugen
|
||||
right_webmin=Webmin versie
|
||||
@@ -1,43 +0,0 @@
|
||||
__norefs=1
|
||||
left_feedback=Send tilbakemelding
|
||||
left_home=System informasjon
|
||||
left_login=Brukernavn: $1
|
||||
left_logs=Vis modulens logger
|
||||
left_oc=Sponset av OpenCountry
|
||||
left_others=Andre
|
||||
left_search=Søk:
|
||||
left_search_usermin=Søk i Usermin:
|
||||
left_search_webmin=Søk i Webmin:
|
||||
right_cpu=CPU gj.snittsbelastninger
|
||||
right_cpuinfo=Prosessor informasjon
|
||||
right_cpustats=$1% bruker, $2% kjerne, $4% IO, $3% ledig
|
||||
right_cputype=$5, $8 kjerner
|
||||
right_cpuuse=CPU bruk
|
||||
right_disk=Lokal diskplass
|
||||
right_from=Logget inn fra
|
||||
right_header0=System informasjon
|
||||
right_header5=Konto informasjon
|
||||
right_host=System vertsnavn
|
||||
right_kernel=Kjerne og CPU
|
||||
right_kernelon=$1 $2 på $3
|
||||
right_load=$1 (1 min) $2 (5 min.) $3 (15 min.)
|
||||
right_login=Logget inn som
|
||||
right_os=Operativsystem
|
||||
right_out=$1 av $2
|
||||
right_procs=Kjørende prosesser
|
||||
right_quota=Diskbruk og kvote
|
||||
right_real=Fysisk minne
|
||||
right_time=Tid på systemet
|
||||
right_updates=Pakkeoppdateringer
|
||||
right_updays=$1 dager, $2 timer, $3 minutter
|
||||
right_uphours=$1 timer, $2 minutter
|
||||
right_upmins=$1 minutter
|
||||
right_upneed=$1 pakkeoppdateringer er tilgjengelige
|
||||
right_upok=Alle installerte pakker er oppdatert
|
||||
right_upsec=$1 pakkeoppdateringer er tilgjengelige, og $2 av disse er sikkerhetsoppdateringer
|
||||
right_uptime=System oppetid
|
||||
right_uquota=Diskkvote og bruk
|
||||
right_used=$1 totalt, $2 brukt
|
||||
right_usermin=Usermin versjon
|
||||
right_virt=Virtuelt minne
|
||||
right_webmin=Webmin versjon
|
||||
@@ -1,43 +0,0 @@
|
||||
__norefs=1
|
||||
left_feedback=Wyślij informacje zwrotne
|
||||
left_home=Informacje o systemie
|
||||
left_login=Login: $1
|
||||
left_logs=Wyświetl logi modułu
|
||||
left_oc=Sponsorowana przez OpenCountry
|
||||
left_others=Inne
|
||||
left_search=Wyszukaj:
|
||||
left_search_usermin=Wyszukaj w Usermin:
|
||||
left_search_webmin=Wyszukaj w Webmin:
|
||||
right_cpu=Średnie obciążenie CPU
|
||||
right_cpuinfo=Informacje o procesorze
|
||||
right_cpustats=$1% użytkownik, $2% jądro, $4% IO, $3% bezczynny
|
||||
right_cputype=$5, $8 rdzeni
|
||||
right_cpuuse=Użycie CPU
|
||||
right_disk=Miejsce na dysku lokalnym
|
||||
right_from=Formularz logowania
|
||||
right_header0=Infomacje o systemie
|
||||
right_header5=Infomacje o koncie
|
||||
right_host=Nazwa hosta systemu
|
||||
right_kernel=Jądro i CPU
|
||||
right_kernelon=$1 $2 na $3
|
||||
right_load=$1 (1 min) $2 (5 minut) $3 (15 minut)
|
||||
right_login=Zalogowany jako
|
||||
right_os=System operacyjny
|
||||
right_out=$1 z $2
|
||||
right_procs=Uruchomionych procesów
|
||||
right_quota=Użycie dysku i quota
|
||||
right_real=Pamięć rzeczywista
|
||||
right_time=Czas systemowy
|
||||
right_updates=Uaktualnienia paczek
|
||||
right_updays=$1 dni, $2 godzin, $3 minut
|
||||
right_uphours=$1 godzin, $2 minut
|
||||
right_upmins=$1 minut
|
||||
right_upneed=Dostępnych $1 uaktualnień paczek
|
||||
right_upok=Wszystkie zainstalowane paczki są aktualne
|
||||
right_upsec=Dostępnych jest $1 uaktualnień, z których $2 to uaktualnienia bezpieczeństwa
|
||||
right_uptime=Czas działania systmu
|
||||
right_uquota=Quota dyskowa i użycie
|
||||
right_used=Razem $1, używane $2
|
||||
right_usermin=Wersja Usermina
|
||||
right_virt=Pamięć wirtualna
|
||||
right_webmin=Wersja Webmina
|
||||
@@ -1,34 +0,0 @@
|
||||
left_login=Login: $1
|
||||
left_home=Informações do Sistema
|
||||
left_oc=Patrocinado por OpenCountry
|
||||
left_feedback=Enviar Feedback
|
||||
left_search_webmin=Procurar no Webmin:
|
||||
left_search_usermin=Procurar no Usermin:
|
||||
left_search=Procurar:
|
||||
left_logs=Ver Registros do Módulos
|
||||
left_others=Outros
|
||||
right_header0=Informações do Sistema
|
||||
right_host=Nome de host do sistema
|
||||
right_os=Sistema operacional
|
||||
right_login=Conectado como
|
||||
right_from=Conectado de
|
||||
right_webmin=Versão do Webmin
|
||||
right_usermin=Versão do Usermin
|
||||
right_cpu=Médias de carga da CPU
|
||||
right_load=$1 (1 minuto) $2 (5 minutos) $3 (15 minutos)
|
||||
right_real=Memória real
|
||||
right_virt=Memória virtual
|
||||
right_procs=Processos em execução
|
||||
right_disk=Espaço em disco local
|
||||
right_used=$1 no total, $2 em uso
|
||||
right_out=$1 of $2
|
||||
right_quota=Uso e cota de espaço em disco
|
||||
right_header5=Informações da Conta
|
||||
right_uquota=Cota e uso de espaço em disco
|
||||
right_time=Tempo no sistema
|
||||
right_uptime=Tempo de atividade do sistema
|
||||
right_updays=$1 dias, $2 horas, $3 minutos
|
||||
right_uphours=$1 horas, $2 minutos
|
||||
right_upmins=$1 minutos
|
||||
right_kernel=Kernel e CPU
|
||||
right_kernelon=$1 $2 em $3
|
||||
@@ -1,39 +0,0 @@
|
||||
left_feedback=Отправить отзыв
|
||||
left_home=Информация о системе
|
||||
left_login=Логин: $1
|
||||
left_logs=Просмотреть журнал модулей
|
||||
left_oc=При поддержке OpenCountry
|
||||
left_others=Остальные
|
||||
left_search=Поиск:
|
||||
left_search_usermin=Поиск Usermin:
|
||||
left_search_webmin=Поиск Webmin:
|
||||
right_cpu=Средняя загрузка процессора
|
||||
right_cpuinfo=Информация о процессоре
|
||||
right_cpustats=$1% пользователь, $2% ядро, $4% IO, $3% простой
|
||||
right_cputype=$5, $8 ядер
|
||||
right_cpuuse=Использование процессора
|
||||
right_disk=Место на локальном диске
|
||||
right_header0=Информация о системе
|
||||
right_header5=Информация об аккаунте
|
||||
right_host=Имя хоста
|
||||
right_kernel=Ядро и процессор
|
||||
right_kernelon=$1 $2 на $3
|
||||
right_login=Вошел как
|
||||
right_os=Операционная система
|
||||
right_procs=Запущенно процессов
|
||||
right_quota=Использование диск и квота
|
||||
right_real=Физическая память
|
||||
right_time=Системное время
|
||||
right_updates=Обновление пакетов
|
||||
right_updays=$1 дней, $2 часов, $3 минут
|
||||
right_uphours=$1 часов, $2 минут
|
||||
right_upmins=$1 минут
|
||||
right_upneed=Доступно $1 обновленных пакетов
|
||||
right_upok=Все установленные пакеты имеют последнюю версию
|
||||
right_upsec=Доступно $1 обновленных пакетов, из которых $2 содержат обновления безопасности
|
||||
right_uptime=Uptime системы
|
||||
right_uquota=Дисковая квота и использование
|
||||
right_used=$1 всего, $2 используется
|
||||
right_usermin=Версия Usermin
|
||||
right_virt=Виртуальная память
|
||||
right_webmin=Версия Webmin
|
||||
@@ -1,176 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
# Show the left-side menu of Webmin modules
|
||||
|
||||
BEGIN { push(@INC, ".."); };
|
||||
use WebminCore;
|
||||
&init_config();
|
||||
&ReadParse();
|
||||
%text = &load_language($current_theme);
|
||||
%gaccess = &get_module_acl(undef, "");
|
||||
|
||||
# Work out what modules and categories we have
|
||||
@cats = &get_visible_modules_categories();
|
||||
@modules = map { @{$_->{'modules'}} } @cats;
|
||||
|
||||
&popup_header();
|
||||
print <<EOF;
|
||||
<link rel="stylesheet" type="text/css" href="left.css" />
|
||||
<script>
|
||||
function toggleview (id1,id2) {
|
||||
var obj1 = document.getElementById(id1);
|
||||
var obj2 = document.getElementById(id2);
|
||||
(obj1.className=="itemshown") ? obj1.className="itemhidden" : obj1.className="itemshown";
|
||||
(obj1.className=="itemshown") ? obj2.innerHTML="<img border='0' src='images/open.gif' alt='[–]'>" : obj2.innerHTML="<img border='0' src='images/closed.gif' alt='[+]'>";
|
||||
}
|
||||
|
||||
// Show the logs for the current module in the right
|
||||
function show_logs() {
|
||||
var url = ''+window.parent.frames[1].location;
|
||||
var sl1 = url.indexOf('//');
|
||||
var mod = '';
|
||||
if (sl1 > 0) {
|
||||
var sl2 = url.indexOf('/', sl1+2);
|
||||
if (sl2 > 0) {
|
||||
var sl3 = url.indexOf('/', sl2+1);
|
||||
if (sl3 > 0) {
|
||||
mod = url.substring(sl2+1, sl3);
|
||||
} else {
|
||||
mod = url.substring(sl2+1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mod && mod.indexOf('.cgi') <= 0) {
|
||||
// Show one module's logs
|
||||
window.parent.frames[1].location = 'webminlog/search.cgi?tall=4&uall=1&fall=1&mall=0&module='+mod;
|
||||
}
|
||||
else {
|
||||
// Show all logs
|
||||
window.parent.frames[1].location = 'webminlog/search.cgi?tall=4&uall=1&fall=1&mall=0&mall=1'
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
EOF
|
||||
|
||||
# Show login
|
||||
print &text('left_login', $remote_user),"<br>\n";
|
||||
|
||||
if ($gconfig{"notabs_${base_remote_user}"} == 2 ||
|
||||
$gconfig{"notabs_${base_remote_user}"} == 0 && $gconfig{'notabs'} ||
|
||||
@modules <= 1) {
|
||||
# Show all modules in one list
|
||||
foreach $minfo (@modules) {
|
||||
$target = $minfo->{'noframe'} ? "_top" : "right";
|
||||
print "<a target=$target href=$minfo->{'dir'}/>$minfo->{'desc'}</a><br>\n";
|
||||
}
|
||||
}
|
||||
else {
|
||||
# Show all modules under categories
|
||||
foreach $c (@cats) {
|
||||
# Show category opener, plus modules under it
|
||||
&print_category_opener(
|
||||
$c->{'code'},
|
||||
$in{$c->{'code'}} ? 1 : 0,
|
||||
$c->{'unused'} ?
|
||||
"<font color=#888888>$c->{'desc'}</font>" :
|
||||
$c->{'desc'});
|
||||
$cls = $in{$c->{'code'}} ? "itemshown" : "itemhidden";
|
||||
print "<div class='$cls' id='$c->{'code'}'>";
|
||||
foreach my $minfo (@{$c->{'modules'}}) {
|
||||
&print_category_link("$minfo->{'dir'}/",
|
||||
$minfo->{'desc'},
|
||||
undef,
|
||||
undef,
|
||||
$minfo->{'noframe'} ? "_top" : "",
|
||||
);
|
||||
}
|
||||
print "</div>\n";
|
||||
}
|
||||
}
|
||||
|
||||
# Show module/help search form
|
||||
if (-r "$root_directory/webmin_search.cgi" &&
|
||||
$gaccess{'webminsearch'}) {
|
||||
print "<form action=webmin_search.cgi target=right>\n";
|
||||
print $text{'left_search'}," ";
|
||||
print &ui_textbox("search", undef, 15);
|
||||
}
|
||||
|
||||
print "<div class='leftlink'><hr></div>\n";
|
||||
|
||||
# Show current module's log search, if logging
|
||||
if ($gconfig{'log'} && &foreign_available("webminlog")) {
|
||||
print "<div class='linkwithicon'><img src=images/logs.gif>\n";
|
||||
print "<div class='aftericon'><a target=right href='webminlog/' onClick='show_logs(); return false;'>$text{'left_logs'}</a></div></div>\n";
|
||||
}
|
||||
|
||||
# Show info link
|
||||
print "<div class='linkwithicon'><img src=images/gohome.gif>\n";
|
||||
print "<div class='aftericon'><a target=right href='right.cgi?open=system&open=status'>$text{'left_home'}</a></div></div>\n";
|
||||
|
||||
# Show feedback link, but only if a custom email is set
|
||||
%gaccess = &get_module_acl(undef, "");
|
||||
if (&get_product_name() eq 'webmin' && # For Webmin
|
||||
!$ENV{'ANONYMOUS_USER'} &&
|
||||
$gconfig{'nofeedbackcc'} != 2 &&
|
||||
$gaccess{'feedback'} &&
|
||||
$gconfig{'feedback_to'} ||
|
||||
&get_product_name() eq 'usermin' && # For Usermin
|
||||
!$ENV{'ANONYMOUS_USER'} &&
|
||||
$gconfig{'feedback'}
|
||||
) {
|
||||
print "<div class='linkwithicon'><img src=images/mail-small.gif>\n";
|
||||
print "<div class='aftericon'><a target=right href='feedback_form.cgi'>$text{'left_feedback'}</a></div></div>\n";
|
||||
}
|
||||
|
||||
# Show refesh modules link, for master admin
|
||||
if (&foreign_available("webmin")) {
|
||||
print "<div class='linkwithicon'><img src=images/refresh-small.gif>\n";
|
||||
print "<div class='aftericon'><a target=right href='webmin/refresh_modules.cgi'>$text{'main_refreshmods'}</a></div></div>\n";
|
||||
}
|
||||
|
||||
# Show logout link
|
||||
&get_miniserv_config(\%miniserv);
|
||||
if ($miniserv{'logout'} && !$ENV{'SSL_USER'} && !$ENV{'LOCAL_USER'} &&
|
||||
$ENV{'HTTP_USER_AGENT'} !~ /webmin/i) {
|
||||
print "<div class='linkwithicon'><img src=images/stock_quit.gif>\n";
|
||||
if ($main::session_id) {
|
||||
print "<div class='aftericon'><a target=_top href='session_login.cgi?logout=1'>$text{'main_logout'}</a></div>";
|
||||
}
|
||||
else {
|
||||
print "<div class='aftericon'><a target=_top href='switch_user.cgi'>$text{'main_switch'}</a></div>";
|
||||
}
|
||||
print "</div>\n";
|
||||
}
|
||||
|
||||
# Show link back to original Webmin server
|
||||
if ($ENV{'HTTP_WEBMIN_SERVERS'}) {
|
||||
print "<div class='linkwithicon'><img src=images/webmin-small.gif>\n";
|
||||
print "<div class='aftericon'><a target=_top href='$ENV{'HTTP_WEBMIN_SERVERS'}'>$text{'header_servers'}</a></div>";
|
||||
}
|
||||
|
||||
&popup_footer();
|
||||
|
||||
# print_category_opener(name, &allcats, label)
|
||||
# Prints out an open/close twistie for some category
|
||||
sub print_category_opener
|
||||
{
|
||||
local ($c, $status, $label) = @_;
|
||||
$label = $c eq "others" ? $text{'left_others'} : $label;
|
||||
local $img = $status ? "open.gif" : "closed.gif";
|
||||
|
||||
# Show link to close or open catgory
|
||||
print "<div class='linkwithicon'>";
|
||||
print "<a href=\"javascript:toggleview('$c','toggle$c')\" id='toggle$c'><img border='0' src='images/$img' alt='[+]'></a>\n";
|
||||
print "<div class='aftericon'><a href=\"javascript:toggleview('$c','toggle$c')\" id='toggle$c'><font color=#000000>$label</font></a></div></div>\n";
|
||||
}
|
||||
|
||||
|
||||
sub print_category_link
|
||||
{
|
||||
local ($link, $label, $image, $noimage, $target) = @_;
|
||||
$target ||= "right";
|
||||
print "<div class='linkindented'><a target=$target href=$link>$label</a></div>\n";
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 559 B |
|
Before Width: | Height: | Size: 826 B |
@@ -1,310 +0,0 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Show server or domain information
|
||||
|
||||
BEGIN { push(@INC, ".."); };
|
||||
use WebminCore;
|
||||
&init_config();
|
||||
&ReadParse();
|
||||
&load_theme_library();
|
||||
if (&get_product_name() eq "usermin") {
|
||||
$level = 3;
|
||||
}
|
||||
else {
|
||||
$level = 0;
|
||||
}
|
||||
%text = &load_language($current_theme);
|
||||
$bar_width = 300;
|
||||
foreach $o (split(/\0/, $in{'open'})) {
|
||||
push(@open, $o);
|
||||
$open{$o} = 1;
|
||||
}
|
||||
|
||||
$prehead = defined(&WebminCore::theme_prehead) ?
|
||||
&capture_function_output(\&WebminCore::theme_prehead) : "";
|
||||
&popup_header(undef, $prehead);
|
||||
print "<center>\n";
|
||||
|
||||
# Webmin logo
|
||||
if (&get_product_name() eq 'webmin') {
|
||||
print "<a href=http://www.webmin.com/ target=_new><img src=images/webmin-blue.png border=0></a><p>\n";
|
||||
}
|
||||
|
||||
if ($level == 0) {
|
||||
# Show general system information
|
||||
print "<table width=70%>\n";
|
||||
|
||||
# Ask status module for collected info
|
||||
&foreign_require("system-status");
|
||||
$info = &system_status::get_collected_info();
|
||||
|
||||
# Hostname
|
||||
$ip = $info && $info->{'ips'} ? $info->{'ips'}->[0]->[0] :
|
||||
&to_ipaddress(get_system_hostname());
|
||||
$ip = " ($ip)" if ($ip);
|
||||
print "<tr> <td><b>$text{'right_host'}</b></td>\n";
|
||||
print "<td>",&get_system_hostname(),$ip,"</td> </tr>\n";
|
||||
|
||||
# Operating system
|
||||
print "<tr> <td><b>$text{'right_os'}</b></td>\n";
|
||||
if ($gconfig{'os_version'} eq '*') {
|
||||
print "<td>$gconfig{'real_os_type'}</td> </tr>\n";
|
||||
}
|
||||
else {
|
||||
print "<td>$gconfig{'real_os_type'} $gconfig{'real_os_version'}</td> </tr>\n";
|
||||
}
|
||||
|
||||
# Webmin version
|
||||
print "<tr> <td><b>$text{'right_webmin'}</b></td>\n";
|
||||
print "<td>",&get_webmin_version(),"</td> </tr>\n";
|
||||
|
||||
# System time
|
||||
$tm = localtime(time());
|
||||
print "<tr> <td><b>$text{'right_time'}</b></td>\n";
|
||||
if (&foreign_available("time")) {
|
||||
$tm = "<a href=time/>$tm</a>";
|
||||
}
|
||||
print "<td>$tm</td> </tr>\n";
|
||||
|
||||
# Kernel and CPU
|
||||
if ($info->{'kernel'}) {
|
||||
print "<tr> <td><b>$text{'right_kernel'}</b></td>\n";
|
||||
print "<td>",&text('right_kernelon',
|
||||
$info->{'kernel'}->{'os'},
|
||||
$info->{'kernel'}->{'version'},
|
||||
$info->{'kernel'}->{'arch'}),"</td> </tr>\n";
|
||||
}
|
||||
|
||||
# CPU type and cores
|
||||
if ($info->{'load'}) {
|
||||
@c = @{$info->{'load'}};
|
||||
if (@c > 3) {
|
||||
print "<tr> <td><b>$text{'right_cpuinfo'}</b></td>\n";
|
||||
print "<td>",&text('right_cputype', @c),"</td> </tr>\n";
|
||||
}
|
||||
}
|
||||
|
||||
# System uptime
|
||||
&foreign_require("proc");
|
||||
my $uptime;
|
||||
my ($d, $h, $m) = &proc::get_system_uptime();
|
||||
if ($d) {
|
||||
$uptime = &text('right_updays', $d, $h, $m);
|
||||
}
|
||||
elsif ($m) {
|
||||
$uptime = &text('right_uphours', $h, $m);
|
||||
}
|
||||
elsif ($m) {
|
||||
$uptime = &text('right_upmins', $m);
|
||||
}
|
||||
if ($uptime) {
|
||||
print "<tr> <td><b>$text{'right_uptime'}</b></td>\n";
|
||||
print "<td>$uptime</td> </tr>\n";
|
||||
}
|
||||
|
||||
# Running processes
|
||||
if (&foreign_check("proc")) {
|
||||
@procs = &proc::list_processes();
|
||||
$pr = scalar(@procs);
|
||||
print "<tr> <td><b>$text{'right_procs'}</b></td>\n";
|
||||
if (&foreign_available("proc")) {
|
||||
$pr = "<a href=proc/>$pr</a>";
|
||||
}
|
||||
print "<td>$pr</td> </tr>\n";
|
||||
}
|
||||
|
||||
# Load averages
|
||||
if ($info->{'load'}) {
|
||||
@c = @{$info->{'load'}};
|
||||
if (@c) {
|
||||
print "<tr> <td><b>$text{'right_cpu'}</b></td>\n";
|
||||
print "<td>",&text('right_load', @c),"</td> </tr>\n";
|
||||
}
|
||||
}
|
||||
|
||||
# CPU usage
|
||||
if ($info->{'cpu'}) {
|
||||
@c = @{$info->{'cpu'}};
|
||||
print "<tr> <td><b>$text{'right_cpuuse'}</b></td>\n";
|
||||
print "<td>",&text('right_cpustats', @c),"</td> </tr>\n";
|
||||
}
|
||||
|
||||
# Memory usage
|
||||
if ($info->{'mem'}) {
|
||||
@m = @{$info->{'mem'}};
|
||||
if (@m && $m[0]) {
|
||||
print "<tr> <td><b>$text{'right_real'}</b></td>\n";
|
||||
print "<td>",&text('right_used',
|
||||
&nice_size($m[0]*1024),
|
||||
&nice_size(($m[0]-$m[1])*1024)),
|
||||
"</td> </tr>\n";
|
||||
print "<tr> <td></td>\n";
|
||||
print "<td>",&bar_chart($m[0], $m[0]-$m[1], 1),
|
||||
"</td> </tr>\n";
|
||||
}
|
||||
|
||||
if (@m && $m[2]) {
|
||||
print "<tr> <td><b>$text{'right_virt'}</b></td>\n";
|
||||
print "<td>",&text('right_used',
|
||||
&nice_size($m[2]*1024),
|
||||
&nice_size(($m[2]-$m[3])*1024)),
|
||||
"</td> </tr>\n";
|
||||
print "<tr> <td></td>\n";
|
||||
print "<td>",&bar_chart($m[2], $m[2]-$m[3], 1),
|
||||
"</td> </tr>\n";
|
||||
}
|
||||
}
|
||||
|
||||
# Disk space on local drives
|
||||
if ($info->{'disk_total'}) {
|
||||
($total, $free) = ($info->{'disk_total'}, $info->{'disk_free'});
|
||||
print "<tr> <td><b>$text{'right_disk'}</b></td>\n";
|
||||
print "<td>",&text('right_used',
|
||||
&nice_size($total),
|
||||
&nice_size($total-$free)),"</td> </tr>\n";
|
||||
print "<tr> <td></td>\n";
|
||||
print "<td>",&bar_chart($total, $total-$free, 1),
|
||||
"</td> </tr>\n";
|
||||
}
|
||||
|
||||
# Package updates
|
||||
if ($info->{'poss'}) {
|
||||
print "<tr> <td><b>$text{'right_updates'}</b></td>\n";
|
||||
@poss = @{$info->{'poss'}};
|
||||
@secs = grep { $_->{'security'} } @poss;
|
||||
if (@poss && @secs) {
|
||||
$msg = &text('right_upsec', scalar(@poss),
|
||||
scalar(@secs));
|
||||
}
|
||||
elsif (@poss) {
|
||||
$msg = &text('right_upneed', scalar(@poss));
|
||||
}
|
||||
else {
|
||||
$msg = $text{'right_upok'};
|
||||
}
|
||||
if (&foreign_available("package-updates")) {
|
||||
$msg = "<a href='package-updates/index.cgi?mode=updates'>$msg</a>";
|
||||
}
|
||||
print "<td>$msg</td> </tr>\n";
|
||||
}
|
||||
|
||||
print "</table>\n";
|
||||
|
||||
# Check for incorrect OS
|
||||
if (&foreign_check("webmin")) {
|
||||
&foreign_require("webmin", "webmin-lib.pl");
|
||||
&webmin::show_webmin_notifications();
|
||||
}
|
||||
}
|
||||
elsif ($level == 3) {
|
||||
# Show Usermin user's information
|
||||
print "<h3>$text{'right_header5'}</h3>\n";
|
||||
print "<table width=70%>\n";
|
||||
|
||||
# Host and login info
|
||||
print "<tr> <td><b>$text{'right_host'}</b></td>\n";
|
||||
print "<td>",&get_system_hostname(),"</td> </tr>\n";
|
||||
|
||||
print "<tr> <td><b>$text{'right_os'}</b></td>\n";
|
||||
if ($gconfig{'os_version'} eq '*') {
|
||||
print "<td>$gconfig{'real_os_type'}</td> </tr>\n";
|
||||
}
|
||||
else {
|
||||
print "<td>$gconfig{'real_os_type'} $gconfig{'real_os_version'}</td> </tr>\n";
|
||||
}
|
||||
|
||||
print "<tr> <td><b>$text{'right_usermin'}</b></td>\n";
|
||||
print "<td>",&get_webmin_version(),"</td> </tr>\n";
|
||||
|
||||
# System time
|
||||
$tm = localtime(time());
|
||||
print "<tr> <td><b>$text{'right_time'}</b></td>\n";
|
||||
print "<td>$tm</td> </tr>\n";
|
||||
|
||||
# Disk quotas
|
||||
if (&foreign_installed("quota")) {
|
||||
&foreign_require("quota", "quota-lib.pl");
|
||||
$n = "a::user_filesystems($remote_user);
|
||||
$usage = 0;
|
||||
$quota = 0;
|
||||
for($i=0; $i<$n; $i++) {
|
||||
if ($quota::filesys{$i,'hblocks'}) {
|
||||
$quota += $quota::filesys{$i,'hblocks'};
|
||||
$usage += $quota::filesys{$i,'ublocks'};
|
||||
}
|
||||
elsif ($quota::filesys{$i,'sblocks'}) {
|
||||
$quota += $quota::filesys{$i,'sblocks'};
|
||||
$usage += $quota::filesys{$i,'ublocks'};
|
||||
}
|
||||
}
|
||||
if ($quota) {
|
||||
$bsize = $quota::config{'block_size'};
|
||||
print "<tr> <td><b>$text{'right_uquota'}</b></td>\n";
|
||||
print "<td>",&text('right_out',
|
||||
&nice_size($usage*$bsize),
|
||||
&nice_size($quota*$bsize)),"</td> </tr>\n";
|
||||
print "<tr> <td></td>\n";
|
||||
print "<td>",&bar_chart($quota, $usage, 1),
|
||||
"</td> </tr>\n";
|
||||
}
|
||||
}
|
||||
print "</table>\n";
|
||||
}
|
||||
|
||||
print "</center>\n";
|
||||
&popup_footer();
|
||||
|
||||
# bar_chart(total, used, blue-rest)
|
||||
# Returns HTML for a bar chart of a single value
|
||||
sub bar_chart
|
||||
{
|
||||
local ($total, $used, $blue) = @_;
|
||||
local $rv;
|
||||
$rv .= sprintf "<img src=images/red.gif width=%s height=10>",
|
||||
int($bar_width*$used/$total)+1;
|
||||
if ($blue) {
|
||||
$rv .= sprintf "<img src=images/blue.gif width=%s height=10>",
|
||||
$bar_width - int($bar_width*$used/$total)-1;
|
||||
}
|
||||
else {
|
||||
$rv .= sprintf "<img src=images/white.gif width=%s height=10>",
|
||||
$bar_width - int($bar_width*$used/$total)-1;
|
||||
}
|
||||
return $rv;
|
||||
}
|
||||
|
||||
# bar_chart_three(total, used1, used2, used3)
|
||||
# Returns HTML for a bar chart of three values, stacked
|
||||
sub bar_chart_three
|
||||
{
|
||||
local ($total, $used1, $used2, $used3) = @_;
|
||||
local $rv;
|
||||
local $w1 = int($bar_width*$used1/$total)+1;
|
||||
local $w2 = int($bar_width*$used2/$total);
|
||||
local $w3 = int($bar_width*$used3/$total);
|
||||
$rv .= sprintf "<img src=images/red.gif width=%s height=10>", $w1;
|
||||
$rv .= sprintf "<img src=images/purple.gif width=%s height=10>", $w2;
|
||||
$rv .= sprintf "<img src=images/blue.gif width=%s height=10>", $w3;
|
||||
$rv .= sprintf "<img src=images/grey.gif width=%s height=10>",
|
||||
$bar_width - $w1 - $w2 - $w3;
|
||||
return $rv;
|
||||
}
|
||||
|
||||
# collapsed_header(text, name)
|
||||
sub collapsed_header
|
||||
{
|
||||
local ($text, $name) = @_;
|
||||
print "<br><font style='font-size:16px'>";
|
||||
local $others = join("&", map { "open=$_" } grep { $_ ne $name } @open);
|
||||
$others = "&$others" if ($others);
|
||||
if ($open{$name}) {
|
||||
print "<img src=images/open.gif border=0>\n";
|
||||
print &ui_link("right.cgi?$others",$text);
|
||||
}
|
||||
else {
|
||||
print "<img src=images/closed.gif border=0>\n";
|
||||
print &ui_link("right.cgi?open=$name$others",$text);
|
||||
}
|
||||
print "</font><br>\n";
|
||||
return $open{$name};
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 501 B |
|
Before Width: | Height: | Size: 626 B |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |