mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 14:13:29 +00:00
Compare commits
579 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a0bd54ab69 | ||
|
|
6880e5a575 | ||
|
|
3efec7d052 | ||
|
|
004c9194f3 | ||
|
|
2f95715827 | ||
|
|
2b212ee3ef | ||
|
|
cc4b757011 | ||
|
|
d766283296 | ||
|
|
2e6771e53a | ||
|
|
db5cb64c4a | ||
|
|
aca8568382 | ||
|
|
aad92595a9 | ||
|
|
caf2f2ac37 | ||
|
|
b7815aa85e | ||
|
|
31bd465921 | ||
|
|
44216dbab9 | ||
|
|
a43730fe49 | ||
|
|
6e005a1106 | ||
|
|
312cc48597 | ||
|
|
c0292a4df8 | ||
|
|
c1e3f77c09 | ||
|
|
772a604203 | ||
|
|
1426db5b17 | ||
|
|
3d35792877 | ||
|
|
a3fddd0f12 | ||
|
|
f54cecaf0f | ||
|
|
df32d33da5 | ||
|
|
cf1b514976 | ||
|
|
0d452693c5 | ||
|
|
a0fc500676 | ||
|
|
846f023392 | ||
|
|
6f6482005e | ||
|
|
9012d421cf | ||
|
|
8b015bff01 | ||
|
|
16c35e2d1e | ||
|
|
9860c6b6e4 | ||
|
|
7216982ded | ||
|
|
126659a8d1 | ||
|
|
0b27152141 | ||
|
|
f20d24a1be | ||
|
|
728b8125de | ||
|
|
7a95702ca2 | ||
|
|
83a1893c7b | ||
|
|
bc23507717 | ||
|
|
a054392f7a | ||
|
|
d56fb1d1e9 | ||
|
|
7a270465d3 | ||
|
|
99e62cd67a | ||
|
|
ba8b0e8972 | ||
|
|
1bc09c40b6 | ||
|
|
f38f3c7bec | ||
|
|
9f293451b9 | ||
|
|
3d6e58dcba | ||
|
|
1cfe6b90d7 | ||
|
|
23aef652a7 | ||
|
|
74ca08fd42 | ||
|
|
1c0e069881 | ||
|
|
80be0a3c4c | ||
|
|
074f7561d8 | ||
|
|
b5b81a95cf | ||
|
|
86eeb96334 | ||
|
|
ae15622a57 | ||
|
|
094a187d54 | ||
|
|
d44c46425f | ||
|
|
bd93dbe9f0 | ||
|
|
b5990ef9fb | ||
|
|
fe6965d1e2 | ||
|
|
c23445a223 | ||
|
|
9da5454082 | ||
|
|
a405b317e3 | ||
|
|
0237dd2a0f | ||
|
|
6e38d8bc8c | ||
|
|
e934994e8f | ||
|
|
232facbf39 | ||
|
|
293d9e17ff | ||
|
|
c00971b390 | ||
|
|
3d5e013f59 | ||
|
|
fd3f6c729f | ||
|
|
5d0f6f0597 | ||
|
|
0a2be8ecfd | ||
|
|
a9a6d51030 | ||
|
|
199f5edb9e | ||
|
|
ce698f5bae | ||
|
|
e27da435ff | ||
|
|
5c31829dc7 | ||
|
|
4ac4a2be0a | ||
|
|
00c632b001 | ||
|
|
3a590ddf6f | ||
|
|
667362c82a | ||
|
|
20862dca92 | ||
|
|
b5b45960a5 | ||
|
|
601b234126 | ||
|
|
f2de59b1df | ||
|
|
d61fb46c74 | ||
|
|
7fc27fdcdd | ||
|
|
95d025a5b1 | ||
|
|
83ee80c675 | ||
|
|
d4ef81f6b2 | ||
|
|
2e76243908 | ||
|
|
97e1ad4c50 | ||
|
|
a4f67548f2 | ||
|
|
442c8a623b | ||
|
|
4bb2ebb84e | ||
|
|
07772b29f6 | ||
|
|
1e95673391 | ||
|
|
f8982ddf4f | ||
|
|
3ce61adcc0 | ||
|
|
98ff989bb9 | ||
|
|
204d7d30b6 | ||
|
|
7ef105ea01 | ||
|
|
96e31eb5a2 | ||
|
|
1668f6f77e | ||
|
|
0287e53229 | ||
|
|
173efa83df | ||
|
|
a4cb099b3f | ||
|
|
e0731515d7 | ||
|
|
d3fc96827d | ||
|
|
452224a24d | ||
|
|
69fd79e2b3 | ||
|
|
fa8654714a | ||
|
|
28888930e7 | ||
|
|
7e2b4e6c5e | ||
|
|
c613cdc8c9 | ||
|
|
b05a2794d8 | ||
|
|
997b33e5fb | ||
|
|
a1a86cfa42 | ||
|
|
475870db79 | ||
|
|
9189c1446a | ||
|
|
ad9c2ec0f9 | ||
|
|
e395cf951e | ||
|
|
1fcb3129f5 | ||
|
|
c5fe632e4e | ||
|
|
c176073339 | ||
|
|
27c7872c94 | ||
|
|
915b6ec224 | ||
|
|
f3a393b2f8 | ||
|
|
e529789543 | ||
|
|
5a20e411fc | ||
|
|
7ef6ea921a | ||
|
|
63b6af8dd4 | ||
|
|
a103a0b10f | ||
|
|
f2374b1fa2 | ||
|
|
40a90f7c71 | ||
|
|
46d7022cc9 | ||
|
|
7efcd84bda | ||
|
|
0e64774db3 | ||
|
|
e9a08bb3bb | ||
|
|
e2df09438a | ||
|
|
63830dd456 | ||
|
|
d4b401e913 | ||
|
|
a889ef3afc | ||
|
|
5f686de889 | ||
|
|
9fcaa65ef4 | ||
|
|
8bd1b626dd | ||
|
|
cf771963c7 | ||
|
|
4912384cd7 | ||
|
|
124d182bf6 | ||
|
|
e972b65393 | ||
|
|
9d0d796469 | ||
|
|
1456825ed4 | ||
|
|
9670fb69cc | ||
|
|
0dd18f3f77 | ||
|
|
21eb487ebb | ||
|
|
72cd4b3a4e | ||
|
|
8e2815dabe | ||
|
|
581047a965 | ||
|
|
1db718fd95 | ||
|
|
04dd39842d | ||
|
|
72d103ea2e | ||
|
|
8163db111a | ||
|
|
55ea719197 | ||
|
|
116cd4162d | ||
|
|
6791b6895f | ||
|
|
2b082de03d | ||
|
|
6ad0df49e1 | ||
|
|
a9e3582190 | ||
|
|
5db95b1e27 | ||
|
|
575f169b93 | ||
|
|
efb8150510 | ||
|
|
10f12a83c6 | ||
|
|
3243948e59 | ||
|
|
1cf382deab | ||
|
|
785cc54ddc | ||
|
|
d2e52c81d4 | ||
|
|
081036d8f6 | ||
|
|
64656b6f24 | ||
|
|
f5ccedfe5b | ||
|
|
85a9056ee8 | ||
|
|
0291ce2e66 | ||
|
|
51a0631bde | ||
|
|
7eec607f86 | ||
|
|
4cbffaa875 | ||
|
|
1f5c860698 | ||
|
|
480f0f0955 | ||
|
|
80ecd012cf | ||
|
|
5e042e7f51 | ||
|
|
e780c2fa1c | ||
|
|
f94faaf303 | ||
|
|
9d2f479e6c | ||
|
|
e7b4985fc5 | ||
|
|
a2816947b1 | ||
|
|
004a888071 | ||
|
|
6041a45e83 | ||
|
|
695577a40e | ||
|
|
bcbd707307 | ||
|
|
c237e851f6 | ||
|
|
629f7e033b | ||
|
|
a59cd42151 | ||
|
|
9ed6338db6 | ||
|
|
f98e8e3398 | ||
|
|
bcc4822e0e | ||
|
|
c45980160a | ||
|
|
8a1446ab2c | ||
|
|
c0500ee0a0 | ||
|
|
a8036120b9 | ||
|
|
6b3b7096ea | ||
|
|
747ea46c54 | ||
|
|
90d2da3588 | ||
|
|
2fd5b42b60 | ||
|
|
3111fb4bd0 | ||
|
|
2990aaaa99 | ||
|
|
baef8aba0f | ||
|
|
46c2113f2f | ||
|
|
f11ef10942 | ||
|
|
30597f6c38 | ||
|
|
167239f8fc | ||
|
|
16fa5c5bec | ||
|
|
319a3b4d84 | ||
|
|
a3fa53727d | ||
|
|
e9640d7622 | ||
|
|
7ba7a75df1 | ||
|
|
10b9916097 | ||
|
|
5bbfbc4a36 | ||
|
|
f4a7048fd9 | ||
|
|
9c63d0c352 | ||
|
|
ff08544347 | ||
|
|
4265e07b4e | ||
|
|
f06270fca1 | ||
|
|
350bd60cc5 | ||
|
|
b001855672 | ||
|
|
bb98a1af45 | ||
|
|
9040c26581 | ||
|
|
5d0411b789 | ||
|
|
fb842fbeda | ||
|
|
2d18903ac6 | ||
|
|
d19f95c65d | ||
|
|
35c65587ba | ||
|
|
cd34c5450e | ||
|
|
4fe4d935a1 | ||
|
|
0229cc5c8e | ||
|
|
fd719dbf47 | ||
|
|
e5b05b4e2b | ||
|
|
a948c6d938 | ||
|
|
d032b22ac3 | ||
|
|
a23867f019 | ||
|
|
e564acbbf9 | ||
|
|
b4617d7c1c | ||
|
|
cc217d3044 | ||
|
|
8a86381d6e | ||
|
|
1cf689e931 | ||
|
|
5000eddb37 | ||
|
|
be4cf27e12 | ||
|
|
44ef858725 | ||
|
|
c18bbbee4c | ||
|
|
769b7d82f0 | ||
|
|
9b3513b148 | ||
|
|
882588d815 | ||
|
|
38bbcf1196 | ||
|
|
c7d2d2a78a | ||
|
|
b2716fc22d | ||
|
|
2f98174db7 | ||
|
|
2f031a1a02 | ||
|
|
97e7ddafd7 | ||
|
|
650c06300a | ||
|
|
9a7ec78cc0 | ||
|
|
8d5109718b | ||
|
|
0358fb2795 | ||
|
|
0f754b170b | ||
|
|
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 |
@@ -226,3 +226,7 @@ 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.
|
||||
---- Changes since 1.790 ----
|
||||
Added a recent logins section to the System Information page.
|
||||
|
||||
2
README
2
README
@@ -1,4 +1,4 @@
|
||||
Webmin Version 1.760
|
||||
Webmin Version 1.800
|
||||
--------------------
|
||||
Webmin is a web-based interface for system administration for Unix.
|
||||
Using any browser that supports tables and forms, you can setup user
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
use Webmin::Page;
|
||||
use Webmin::ResultPage;
|
||||
use Webmin::ErrorPage;
|
||||
use Webmin::ConfirmPage;
|
||||
use Webmin::Form;
|
||||
use Webmin::Section;
|
||||
use Webmin::Textbox;
|
||||
use Webmin::OptTextbox;
|
||||
use Webmin::OptTextarea;
|
||||
use Webmin::Submit;
|
||||
use Webmin::Password;
|
||||
use Webmin::Checkbox;
|
||||
use Webmin::Select;
|
||||
use Webmin::Radios;
|
||||
use Webmin::Checkboxes;
|
||||
use Webmin::Table;
|
||||
use Webmin::Menu;
|
||||
use Webmin::LinkTable;
|
||||
use Webmin::Tabs;
|
||||
use Webmin::Textarea;
|
||||
use Webmin::Upload;
|
||||
use Webmin::DynamicText;
|
||||
use Webmin::DynamicBar;
|
||||
use Webmin::DynamicWait;
|
||||
use Webmin::DynamicHTML;
|
||||
use Webmin::Properties;
|
||||
use Webmin::User;
|
||||
use Webmin::Group;
|
||||
use Webmin::File;
|
||||
use Webmin::Button;
|
||||
use Webmin::JavascriptButton;
|
||||
use Webmin::PlainText;
|
||||
use Webmin::Multiline;
|
||||
use Webmin::Date;
|
||||
use Webmin::Time;
|
||||
use Webmin::TitleList;
|
||||
use Webmin::Columns;
|
||||
use Webmin::Icon;
|
||||
use Webmin::TableAction;
|
||||
use Webmin::InputTable;
|
||||
use WebminCore;
|
||||
|
||||
1;
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
package Webmin::ResultPage;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::ResultPage(subheading, title, message, [help-name])
|
||||
Create a new page object for showing some success message.
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::ResultPage::new) &&
|
||||
caller() !~ /Webmin::Theme::ResultPage/) {
|
||||
return new Webmin::Theme::ResultPage(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $subheading, $title, $message, $help) = @_;
|
||||
$self = new Webmin::Page($subheading, $title, $help);
|
||||
$self->add_message("<b>$message</b>");
|
||||
return $self;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
File diff suppressed because one or more lines are too long
44
WebminUI/All.pm
Normal file
44
WebminUI/All.pm
Normal file
@@ -0,0 +1,44 @@
|
||||
use WebminUI::Page;
|
||||
use WebminUI::ResultPage;
|
||||
use WebminUI::ErrorPage;
|
||||
use WebminUI::ConfirmPage;
|
||||
use WebminUI::Form;
|
||||
use WebminUI::Section;
|
||||
use WebminUI::Textbox;
|
||||
use WebminUI::OptTextbox;
|
||||
use WebminUI::OptTextarea;
|
||||
use WebminUI::Submit;
|
||||
use WebminUI::Password;
|
||||
use WebminUI::Checkbox;
|
||||
use WebminUI::Select;
|
||||
use WebminUI::Radios;
|
||||
use WebminUI::Checkboxes;
|
||||
use WebminUI::Table;
|
||||
use WebminUI::Menu;
|
||||
use WebminUI::LinkTable;
|
||||
use WebminUI::Tabs;
|
||||
use WebminUI::Textarea;
|
||||
use WebminUI::Upload;
|
||||
use WebminUI::DynamicText;
|
||||
use WebminUI::DynamicBar;
|
||||
use WebminUI::DynamicWait;
|
||||
use WebminUI::DynamicHTML;
|
||||
use WebminUI::Properties;
|
||||
use WebminUI::User;
|
||||
use WebminUI::Group;
|
||||
use WebminUI::File;
|
||||
use WebminUI::Button;
|
||||
use WebminUI::JavascriptButton;
|
||||
use WebminUI::PlainText;
|
||||
use WebminUI::Multiline;
|
||||
use WebminUI::Date;
|
||||
use WebminUI::Time;
|
||||
use WebminUI::TitleList;
|
||||
use WebminUI::Columns;
|
||||
use WebminUI::Icon;
|
||||
use WebminUI::TableAction;
|
||||
use WebminUI::InputTable;
|
||||
use WebminCore;
|
||||
|
||||
1;
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
package Webmin::Button;
|
||||
use Webmin::Input;
|
||||
package WebminUI::Button;
|
||||
use WebminUI::Input;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Input" );
|
||||
@ISA = ( "WebminUI::Input" );
|
||||
|
||||
=head2 new Webmin::Button(cgi, label, [name])
|
||||
=head2 new WebminUI::Button(cgi, label, [name])
|
||||
Creates a button that when clicked will link to some other page
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Button::new) &&
|
||||
caller() !~ /Webmin::Theme::Button/) {
|
||||
return new Webmin::Theme::Button(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Button::new) &&
|
||||
caller() !~ /WebminUI::Theme::Button/) {
|
||||
return new WebminUI::Theme::Button(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $cgi, $value, $name) = @_;
|
||||
$self = { };
|
||||
@@ -1,15 +1,15 @@
|
||||
package Webmin::Checkbox;
|
||||
use Webmin::Input;
|
||||
package WebminUI::Checkbox;
|
||||
use WebminUI::Input;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Input" );
|
||||
@ISA = ( "WebminUI::Input" );
|
||||
|
||||
=head2 new Webmin::Checkbox(name, return, label, checked, [disabled])
|
||||
=head2 new WebminUI::Checkbox(name, return, label, checked, [disabled])
|
||||
Create a single checkbox field
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Checkbox::new)) {
|
||||
return new Webmin::Theme::Checkbox(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Checkbox::new)) {
|
||||
return new WebminUI::Theme::Checkbox(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $return, $label, $checked, $disabled) = @_;
|
||||
$self = { };
|
||||
@@ -1,15 +1,15 @@
|
||||
package Webmin::Checkboxes;
|
||||
use Webmin::Input;
|
||||
package WebminUI::Checkboxes;
|
||||
use WebminUI::Input;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Input" );
|
||||
@ISA = ( "WebminUI::Input" );
|
||||
|
||||
=head2 new Webmin::Checkboxes(name, value|&values, &options, [disabled])
|
||||
=head2 new WebminUI::Checkboxes(name, value|&values, &options, [disabled])
|
||||
Create a list of checkboxes, of which zero or more may be selected
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Checkboxes::new)) {
|
||||
return new Webmin::Theme::Checkboxes(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Checkboxes::new)) {
|
||||
return new WebminUI::Theme::Checkboxes(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $options, $disabled) = @_;
|
||||
$self = { };
|
||||
@@ -1,14 +1,14 @@
|
||||
package Webmin::Columns;
|
||||
package WebminUI::Columns;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::Columns(cols)
|
||||
=head2 new WebminUI::Columns(cols)
|
||||
Displays some page elements in a multi-column table
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
my ($self, $cols) = @_;
|
||||
if (defined(&Webmin::Theme::Columns::new)) {
|
||||
return new Webmin::Theme::Columns(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Columns::new)) {
|
||||
return new WebminUI::Theme::Columns(@_[1..$#_]);
|
||||
}
|
||||
$self = { 'columns' => 2 };
|
||||
bless($self);
|
||||
@@ -43,7 +43,7 @@ return $rv;
|
||||
}
|
||||
|
||||
=head2 add(object)
|
||||
Adds some Webmin:: object to this list
|
||||
Adds some WebminUI:: object to this list
|
||||
=cut
|
||||
sub add
|
||||
{
|
||||
@@ -66,7 +66,7 @@ my ($self) = @_;
|
||||
return $self->{'columns'};
|
||||
}
|
||||
|
||||
=head2 set_page(Webmin::Page)
|
||||
=head2 set_page(WebminUI::Page)
|
||||
Called when this menu is added to a page
|
||||
=cut
|
||||
sub set_page
|
||||
@@ -1,23 +1,23 @@
|
||||
package Webmin::ConfirmPage;
|
||||
use Webmin::Page;
|
||||
package WebminUI::ConfirmPage;
|
||||
use WebminUI::Page;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Page" );
|
||||
@ISA = ( "WebminUI::Page" );
|
||||
|
||||
=head2 new Webmin::ConfirmPage(subheading, title, message, cgi, &in, [ok-message],
|
||||
=head2 new WebminUI::ConfirmPage(subheading, title, message, cgi, &in, [ok-message],
|
||||
[cancel-message], [help-name])
|
||||
Create a new page object that asks if the user is sure if he wants to
|
||||
do something or not.
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::ConfirmPage::new)) {
|
||||
return new Webmin::Theme::ConfirmPage(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::ConfirmPage::new)) {
|
||||
return new WebminUI::Theme::ConfirmPage(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $subheading, $title, $message, $cgi, $in, $ok, $cancel, $help) = @_;
|
||||
$self = new Webmin::Page($subheading, $title, $help);
|
||||
$self = new WebminUI::Page($subheading, $title, $help);
|
||||
$self->{'in'} = $in;
|
||||
$self->add_message($message);
|
||||
my $form = new Webmin::Form($cgi, "get");
|
||||
my $form = new WebminUI::Form($cgi, "get");
|
||||
$form->set_input($in);
|
||||
$self->add_form($form);
|
||||
foreach my $i (keys %$in) {
|
||||
@@ -25,8 +25,8 @@ foreach my $i (keys %$in) {
|
||||
$form->add_hidden($i, $v);
|
||||
}
|
||||
}
|
||||
$form->add_button(new Webmin::Submit($ok || "OK", "ui_confirm"));
|
||||
$form->add_button(new Webmin::Submit($cancel || $text{'cancel'}, "ui_cancel"));
|
||||
$form->add_button(new WebminUI::Submit($ok || "OK", "ui_confirm"));
|
||||
$form->add_button(new WebminUI::Submit($cancel || $text{'cancel'}, "ui_cancel"));
|
||||
bless($self);
|
||||
return $self;
|
||||
}
|
||||
@@ -1,16 +1,16 @@
|
||||
package Webmin::Date;
|
||||
use Webmin::Input;
|
||||
package WebminUI::Date;
|
||||
use WebminUI::Input;
|
||||
use Time::Local;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Input" );
|
||||
@ISA = ( "WebminUI::Input" );
|
||||
|
||||
=head2 new Webmin::Date(name, time, [disabled])
|
||||
=head2 new WebminUI::Date(name, time, [disabled])
|
||||
Create a new field for selecting a date
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Date::new)) {
|
||||
return new Webmin::Theme::Date(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Date::new)) {
|
||||
return new WebminUI::Theme::Date(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $disabled) = @_;
|
||||
bless($self = { });
|
||||
@@ -1,7 +1,7 @@
|
||||
package Webmin::DynamicBar;
|
||||
package WebminUI::DynamicBar;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::DynamicBar(&start-function, max)
|
||||
=head2 new WebminUI::DynamicBar(&start-function, max)
|
||||
A page element for displaying progress towards some goal, like the download of
|
||||
a file.
|
||||
=cut
|
||||
@@ -91,7 +91,7 @@ my ($self) = @_;
|
||||
return $self->{'wait'};
|
||||
}
|
||||
|
||||
=head2 set_page(Webmin::Page)
|
||||
=head2 set_page(WebminUI::Page)
|
||||
Called when this dynamic text box is added to a page
|
||||
=cut
|
||||
sub set_page
|
||||
@@ -1,7 +1,7 @@
|
||||
package Webmin::DynamicHTML;
|
||||
package WebminUI::DynamicHTML;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::DynamicHTML(&function, &args, [before])
|
||||
=head2 new WebminUI::DynamicHTML(&function, &args, [before])
|
||||
When the page is being rendered, executes the given function and prints any
|
||||
text that it returns.
|
||||
=cut
|
||||
@@ -63,7 +63,7 @@ sub needs_unbuffered
|
||||
return 1;
|
||||
}
|
||||
|
||||
=head2 set_page(Webmin::Page)
|
||||
=head2 set_page(WebminUI::Page)
|
||||
Called when this dynamic HTML element is added to a page
|
||||
=cut
|
||||
sub set_page
|
||||
@@ -1,8 +1,8 @@
|
||||
# XXX should support non-Javascript mode?
|
||||
package Webmin::DynamicText;
|
||||
package WebminUI::DynamicText;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::DynamicText(&start-function, &args)
|
||||
=head2 new WebminUI::DynamicText(&start-function, &args)
|
||||
A page element for displaying text that takes time to generate, such as from
|
||||
a long-running script. Uses a non-editable text box, updated via Javascript.
|
||||
The function will be called when it is time to start producing output, with this
|
||||
@@ -90,7 +90,7 @@ my ($self) = @_;
|
||||
return $self->{'wait'};
|
||||
}
|
||||
|
||||
=head2 set_page(Webmin::Page)
|
||||
=head2 set_page(WebminUI::Page)
|
||||
Called when this dynamic text box is added to a page
|
||||
=cut
|
||||
sub set_page
|
||||
@@ -1,7 +1,7 @@
|
||||
package Webmin::DynamicWait;
|
||||
package WebminUI::DynamicWait;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::DynamicWait(&start-function, [&args])
|
||||
=head2 new WebminUI::DynamicWait(&start-function, [&args])
|
||||
A page element indicating that something is happening.
|
||||
=cut
|
||||
sub new
|
||||
@@ -99,7 +99,7 @@ my ($self) = @_;
|
||||
return $self->{'wait'};
|
||||
}
|
||||
|
||||
=head2 set_page(Webmin::Page)
|
||||
=head2 set_page(WebminUI::Page)
|
||||
Called when this dynamic text box is added to a page
|
||||
=cut
|
||||
sub set_page
|
||||
@@ -1,16 +1,16 @@
|
||||
package Webmin::ErrorPage;
|
||||
package WebminUI::ErrorPage;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::ErrorPage(subheading, title, message, [program-output], [help-name])
|
||||
=head2 new WebminUI::ErrorPage(subheading, title, message, [program-output], [help-name])
|
||||
Create a new page object for showing an error of some kind
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::ErrorPage::new)) {
|
||||
return new Webmin::Theme::ErrorPage(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::ErrorPage::new)) {
|
||||
return new WebminUI::Theme::ErrorPage(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $subheading, $title, $message, $output, $help) = @_;
|
||||
$self = new Webmin::Page($subheading, $title, $help);
|
||||
$self = new WebminUI::Page($subheading, $title, $help);
|
||||
$self->add_message("<b>",$text{'error'}," : ",$message,"</b>");
|
||||
$self->add_message("<pre>",$output,"</pre>");
|
||||
return $self;
|
||||
@@ -1,18 +1,18 @@
|
||||
package Webmin::File;
|
||||
use Webmin::Textbox;
|
||||
package WebminUI::File;
|
||||
use WebminUI::Textbox;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Textbox" );
|
||||
@ISA = ( "WebminUI::Textbox" );
|
||||
|
||||
=head2 new Webmin::File(name, value, size, [directory], [disabled])
|
||||
=head2 new WebminUI::File(name, value, size, [directory], [disabled])
|
||||
A text box for selecting a file
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::File::new)) {
|
||||
return new Webmin::Theme::File(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::File::new)) {
|
||||
return new WebminUI::Theme::File(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $size, $directory, $disabled) = @_;
|
||||
$self = new Webmin::Textbox($name, $value, $size, $disabled);
|
||||
$self = new WebminUI::Textbox($name, $value, $size, $disabled);
|
||||
bless($self);
|
||||
$self->set_directory($directory);
|
||||
return $self;
|
||||
@@ -24,7 +24,7 @@ Returns the HTML for this file input
|
||||
sub html
|
||||
{
|
||||
my ($self) = @_;
|
||||
my $rv = Webmin::Textbox::html($self);
|
||||
my $rv = WebminUI::Textbox::html($self);
|
||||
my $name = $self->get_name();
|
||||
my $directory = $self->get_directory();
|
||||
my $add = 0;
|
||||
@@ -1,13 +1,13 @@
|
||||
package Webmin::Form;
|
||||
package WebminUI::Form;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::Form(cgi, [method])
|
||||
=head2 new WebminUI::Form(cgi, [method])
|
||||
Creates a new form, which submits to the given CGI
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Form::new)) {
|
||||
return new Webmin::Theme::Form(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Form::new)) {
|
||||
return new WebminUI::Theme::Form(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $program, $method) = @_;
|
||||
$self = { 'method' => 'get',
|
||||
@@ -102,7 +102,7 @@ return "<form action='$self->{'program'}' ".
|
||||
}
|
||||
|
||||
=head2 add_section(section)
|
||||
Adds a Webmin::Section object to this form
|
||||
Adds a WebminUI::Section object to this form
|
||||
=cut
|
||||
sub add_section
|
||||
{
|
||||
@@ -120,7 +120,7 @@ return $self->{'sections'}->[$idx];
|
||||
}
|
||||
|
||||
=head2 add_button(button, [beside, ...])
|
||||
Adds a Webmin::Submit object to this form, for display at the bottom
|
||||
Adds a WebminUI::Submit object to this form, for display at the bottom
|
||||
=cut
|
||||
sub add_button
|
||||
{
|
||||
@@ -312,7 +312,7 @@ foreach my $i ($self->list_inputs()) {
|
||||
return @dis;
|
||||
}
|
||||
|
||||
=head2 set_page(Webmin::Page)
|
||||
=head2 set_page(WebminUI::Page)
|
||||
Called when this form is added to a page
|
||||
=cut
|
||||
sub set_page
|
||||
@@ -1,18 +1,18 @@
|
||||
package Webmin::Group;
|
||||
use Webmin::Textbox;
|
||||
package WebminUI::Group;
|
||||
use WebminUI::Textbox;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Textbox" );
|
||||
@ISA = ( "WebminUI::Textbox" );
|
||||
|
||||
=head2 new Webmin::Group(name, value, [multiple], [disabled])
|
||||
=head2 new WebminUI::Group(name, value, [multiple], [disabled])
|
||||
A text box for entering or selecting one or many Unix groupnames
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Group::new)) {
|
||||
return new Webmin::Theme::Group(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Group::new)) {
|
||||
return new WebminUI::Theme::Group(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $multiple, $disabled) = @_;
|
||||
$self = new Webmin::Textbox($name, $value, $multiple ? 40 : 15, $disabled);
|
||||
$self = new WebminUI::Textbox($name, $value, $multiple ? 40 : 15, $disabled);
|
||||
bless($self);
|
||||
$self->set_multiple($multiple);
|
||||
return $self;
|
||||
@@ -24,7 +24,7 @@ Returns the HTML for this group input
|
||||
sub html
|
||||
{
|
||||
my ($self) = @_;
|
||||
my $rv = Webmin::Textbox::html($self);
|
||||
my $rv = WebminUI::Textbox::html($self);
|
||||
my $name = $self->get_name();
|
||||
my $multiple = $self->get_multiple();
|
||||
local $w = $multiple ? 500 : 300;
|
||||
@@ -1,7 +1,7 @@
|
||||
package Webmin::Icon;
|
||||
package WebminUI::Icon;
|
||||
use WebminCore;
|
||||
|
||||
=head2 Webmin::Icon(type, [message])
|
||||
=head2 WebminUI::Icon(type, [message])
|
||||
This object generates an icon indicating some status. Possible types are :
|
||||
ok - OK
|
||||
critial - A serious problem
|
||||
@@ -11,8 +11,8 @@ Can be used inside tables and property lists
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Icon::new) && caller() !~ /Webmin::Theme::Icon/) {
|
||||
return new Webmin::Theme::Icon(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Icon::new) && caller() !~ /WebminUI::Theme::Icon/) {
|
||||
return new WebminUI::Theme::Icon(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $type, $message) = @_;
|
||||
$self = { };
|
||||
@@ -1,4 +1,4 @@
|
||||
package Webmin::Input;
|
||||
package WebminUI::Input;
|
||||
use WebminCore;
|
||||
|
||||
sub set_form
|
||||
@@ -1,19 +1,19 @@
|
||||
package Webmin::InputTable;
|
||||
use Webmin::Table;
|
||||
package WebminUI::InputTable;
|
||||
use WebminUI::Table;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Table" );
|
||||
@ISA = ( "WebminUI::Table" );
|
||||
|
||||
=head2 new Webmin::InputTable(&headings, [width], [name], [heading])
|
||||
=head2 new WebminUI::InputTable(&headings, [width], [name], [heading])
|
||||
A table containing multiple rows of inputs, each of which is the same
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::InputTable::new) &&
|
||||
caller() !~ /Webmin::Theme::InputTable/) {
|
||||
return new Webmin::Theme::InputTable(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::InputTable::new) &&
|
||||
caller() !~ /WebminUI::Theme::InputTable/) {
|
||||
return new WebminUI::Theme::InputTable(@_[1..$#_]);
|
||||
}
|
||||
my $self = defined(&Webmin::Theme::Table::new) ? Webmin::Theme::Table::new(@_)
|
||||
: Webmin::Table::new(@_);
|
||||
my $self = defined(&WebminUI::Theme::Table::new) ? WebminUI::Theme::Table::new(@_)
|
||||
: WebminUI::Table::new(@_);
|
||||
bless($self);
|
||||
$self->{'rowcount'} = 0;
|
||||
return $self;
|
||||
@@ -56,7 +56,7 @@ sub get_values
|
||||
my ($self, $row) = @_;
|
||||
my @rv;
|
||||
foreach my $i (@{$self->{'rows'}->[$row]}) {
|
||||
if (ref($i) && $i->isa("Webmin::Input")) {
|
||||
if (ref($i) && $i->isa("WebminUI::Input")) {
|
||||
push(@rv, $i->get_value());
|
||||
}
|
||||
}
|
||||
@@ -68,10 +68,10 @@ return @rv;
|
||||
sub list_inputs
|
||||
{
|
||||
my ($self) = @_;
|
||||
my @rv = Webmin::Table::list_inputs($self);
|
||||
my @rv = WebminUI::Table::list_inputs($self);
|
||||
foreach my $r (@{$self->{'rows'}}) {
|
||||
foreach my $i (@$r) {
|
||||
if ($i && ref($i) && $i->isa("Webmin::Input")) {
|
||||
if ($i && ref($i) && $i->isa("WebminUI::Input")) {
|
||||
push(@rv, $i);
|
||||
}
|
||||
}
|
||||
@@ -111,7 +111,7 @@ foreach my $r (@{$self->{'rows'}}) {
|
||||
}
|
||||
}
|
||||
foreach my $i (@$r) {
|
||||
if ($i && ref($i) && $i->isa("Webmin::Input") && !$skip) {
|
||||
if ($i && ref($i) && $i->isa("WebminUI::Input") && !$skip) {
|
||||
my $label = &text('ui_rowlabel', $k, $self->{'headings'}->[$j]);
|
||||
foreach my $e ($i->validate()) {
|
||||
push(@errs, [ $i->get_name(), $label." ".$e ]);
|
||||
@@ -1,16 +1,16 @@
|
||||
package Webmin::JavascriptButton;
|
||||
use Webmin::Input;
|
||||
package WebminUI::JavascriptButton;
|
||||
use WebminUI::Input;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Input" );
|
||||
@ISA = ( "WebminUI::Input" );
|
||||
|
||||
=head2 new Webmin::JavascriptButton(label, script, [disabled])
|
||||
=head2 new WebminUI::JavascriptButton(label, script, [disabled])
|
||||
Create a button that runs some Javascript when clicked
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::JavascriptButton::new) &&
|
||||
caller() !~ /Webmin::Theme::JavascriptButton/) {
|
||||
return new Webmin::Theme::JavascriptButton(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::JavascriptButton::new) &&
|
||||
caller() !~ /WebminUI::Theme::JavascriptButton/) {
|
||||
return new WebminUI::Theme::JavascriptButton(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $value, $script, $disabled) = @_;
|
||||
$self = { };
|
||||
@@ -1,18 +1,18 @@
|
||||
package Webmin::LinkTable;
|
||||
use Webmin::Table;
|
||||
package WebminUI::LinkTable;
|
||||
use WebminUI::Table;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::LinkTable(heading, [columns], [width], [name])
|
||||
=head2 new WebminUI::LinkTable(heading, [columns], [width], [name])
|
||||
Creates a new table that just displays links, like in the Users and Groups module
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::LinkTable::new) &&
|
||||
caller() !~ /Webmin::Theme::LinkTable/) {
|
||||
return new Webmin::Theme::LinkTable(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::LinkTable::new) &&
|
||||
caller() !~ /WebminUI::Theme::LinkTable/) {
|
||||
return new WebminUI::Theme::LinkTable(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $heading, $columns, $width, $name) = @_;
|
||||
$self = { 'sorter' => \&Webmin::Table::default_sorter,
|
||||
$self = { 'sorter' => \&WebminUI::Table::default_sorter,
|
||||
'columns' => 4,
|
||||
'sortable' => 1 };
|
||||
bless($self);
|
||||
@@ -245,7 +245,7 @@ return $self->{'columns'};
|
||||
}
|
||||
|
||||
=head2 set_form(form)
|
||||
Called by the Webmin::Form object when this table is added to it
|
||||
Called by the WebminUI::Form object when this table is added to it
|
||||
=cut
|
||||
sub set_form
|
||||
{
|
||||
@@ -257,7 +257,7 @@ if ($self->{'selectinput'}) {
|
||||
}
|
||||
|
||||
=head2 set_selector(input)
|
||||
Takes a Webmin::Checkboxes or Webmin::Radios object, and uses it to add checkboxes
|
||||
Takes a WebminUI::Checkboxes or WebminUI::Radios object, and uses it to add checkboxes
|
||||
to all the entries
|
||||
=cut
|
||||
sub set_selector
|
||||
@@ -1,14 +1,14 @@
|
||||
package Webmin::Menu;
|
||||
package WebminUI::Menu;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::Menu(&options, [columns])
|
||||
=head2 new WebminUI::Menu(&options, [columns])
|
||||
Generates a menu of options, typically using icons.
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
my ($self, $options, $columns) = @_;
|
||||
if (defined(&Webmin::Theme::Menu::new)) {
|
||||
return new Webmin::Theme::Menu(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Menu::new)) {
|
||||
return new WebminUI::Theme::Menu(@_[1..$#_]);
|
||||
}
|
||||
$self = { 'columns' => 4 };
|
||||
bless($self);
|
||||
@@ -73,7 +73,7 @@ my ($self) = @_;
|
||||
return $self->{'columns'};
|
||||
}
|
||||
|
||||
=head2 set_page(Webmin::Page)
|
||||
=head2 set_page(WebminUI::Page)
|
||||
Called when this menu is added to a page
|
||||
=cut
|
||||
sub set_page
|
||||
@@ -1,19 +1,19 @@
|
||||
package Webmin::Multiline;
|
||||
use Webmin::Textarea;
|
||||
package WebminUI::Multiline;
|
||||
use WebminUI::Textarea;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Textarea" );
|
||||
@ISA = ( "WebminUI::Textarea" );
|
||||
|
||||
=head2 new Webmin::Multiline(name, &lines, rows, cols, [disabled])
|
||||
=head2 new WebminUI::Multiline(name, &lines, rows, cols, [disabled])
|
||||
Create a new input for entering multiple text entries. By default, just uses
|
||||
a textbox
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Multiline::new)) {
|
||||
return new Webmin::Theme::Multiline(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Multiline::new)) {
|
||||
return new WebminUI::Theme::Multiline(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $lines, $rows, $cols, $wrap, $disabled) = @_;
|
||||
$self = new Webmin::Textarea($name, join("\n", @$lines), $rows, $cols, undef, $disabled);
|
||||
$self = new WebminUI::Textarea($name, join("\n", @$lines), $rows, $cols, undef, $disabled);
|
||||
bless($self);
|
||||
return $self;
|
||||
}
|
||||
@@ -1,18 +1,18 @@
|
||||
package Webmin::OptTextarea;
|
||||
use Webmin::Textarea;
|
||||
package WebminUI::OptTextarea;
|
||||
use WebminUI::Textarea;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Textarea" );
|
||||
@ISA = ( "WebminUI::Textarea" );
|
||||
|
||||
=head2 new Webmin::OptTextarea(name, value, rows, cols, [default-msg], [other-msg])
|
||||
=head2 new WebminUI::OptTextarea(name, value, rows, cols, [default-msg], [other-msg])
|
||||
Create a text area whose value is optional.
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::OptTextarea::new)) {
|
||||
return new Webmin::Theme::OptTextarea(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::OptTextarea::new)) {
|
||||
return new WebminUI::Theme::OptTextarea(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $rows, $cols, $default, $other) = @_;
|
||||
$self = new Webmin::Textarea($name, $value, $rows, $cols);
|
||||
$self = new WebminUI::Textarea($name, $value, $rows, $cols);
|
||||
bless($self);
|
||||
$self->set_default($default || $text{'default'});
|
||||
$self->set_other($other) if ($other);
|
||||
@@ -57,7 +57,7 @@ if (defined($self->get_value())) {
|
||||
if ($self->get_value() eq "") {
|
||||
return ( $text{'ui_nothing'} );
|
||||
}
|
||||
return Webmin::Textbox::validate($self);
|
||||
return WebminUI::Textbox::validate($self);
|
||||
}
|
||||
return ( );
|
||||
}
|
||||
@@ -1,18 +1,18 @@
|
||||
package Webmin::OptTextbox;
|
||||
use Webmin::Textbox;
|
||||
package WebminUI::OptTextbox;
|
||||
use WebminUI::Textbox;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Textbox" );
|
||||
@ISA = ( "WebminUI::Textbox" );
|
||||
|
||||
=head2 new Webmin::OptTextbox(name, value, size, [default-msg], [other-msg])
|
||||
=head2 new WebminUI::OptTextbox(name, value, size, [default-msg], [other-msg])
|
||||
Create a text field whose value is optional.
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::OptTextbox::new)) {
|
||||
return new Webmin::Theme::OptTextbox(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::OptTextbox::new)) {
|
||||
return new WebminUI::Theme::OptTextbox(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $size, $default, $other) = @_;
|
||||
$self = new Webmin::Textbox($name, $value, $size);
|
||||
$self = new WebminUI::Textbox($name, $value, $size);
|
||||
bless($self);
|
||||
$self->set_default($default || $text{'default'});
|
||||
$self->set_other($other) if ($other);
|
||||
@@ -39,7 +39,7 @@ if (defined($self->get_value())) {
|
||||
if ($self->get_value() eq "") {
|
||||
return ( $text{'ui_nothing'} );
|
||||
}
|
||||
return Webmin::Textbox::validate($self);
|
||||
return WebminUI::Textbox::validate($self);
|
||||
}
|
||||
return ( );
|
||||
}
|
||||
@@ -1,16 +1,16 @@
|
||||
package Webmin::Page;
|
||||
package WebminUI::Page;
|
||||
use WebminCore;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::Page(subheading, title, [help-name], [show-config],
|
||||
=head2 new WebminUI::Page(subheading, title, [help-name], [show-config],
|
||||
[no-module-index], [no-webmin-index], [rightside],
|
||||
[header], [body-tags], [below-text])
|
||||
Create a new page object, with the given heading and other details
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Page::new) && caller() !~ /Webmin::Theme::Page/) {
|
||||
return new Webmin::Theme::Page(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Page::new) && caller() !~ /WebminUI::Theme::Page/) {
|
||||
return new WebminUI::Theme::Page(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $subheading, $title, $help, $config, $noindex, $nowebmin, $right,
|
||||
$header, $body, $below) = @_;
|
||||
@@ -216,7 +216,7 @@ print STDERR "Could not find $object in ",join(" ",@{$self->{'contents'}}),"\n";
|
||||
return scalar(@{$self->{'contents'}});
|
||||
}
|
||||
|
||||
=head2 add_form(Webmin::Form)
|
||||
=head2 add_form(WebminUI::Form)
|
||||
Adds a form to be displayed on this page
|
||||
=cut
|
||||
sub add_form
|
||||
@@ -246,7 +246,7 @@ push(@{$self->{'buttons'}}, [ $cgi, $label, $desc, join(" ", @$hiddens),
|
||||
$before, $after ]);
|
||||
}
|
||||
|
||||
=head2 add_tabs(Webmin::Tags)
|
||||
=head2 add_tabs(WebminUI::Tags)
|
||||
Tells the page to display the given set of tabs at the top
|
||||
=cut
|
||||
sub add_tabs
|
||||
@@ -255,7 +255,7 @@ my ($self, $tabs) = @_;
|
||||
$self->{'tabs'} = $tabs;
|
||||
}
|
||||
|
||||
=head2 add_dynamic(Webmin::DynamicText|Webmin::DynamicProgress)
|
||||
=head2 add_dynamic(WebminUI::DynamicText|WebminUI::DynamicProgress)
|
||||
Adds an object that is dynamically generated, such as a text box or progress bar.
|
||||
=cut
|
||||
sub add_dynamic
|
||||
@@ -1,18 +1,18 @@
|
||||
package Webmin::Password;
|
||||
@ISA = ( "Webmin::Textbox" );
|
||||
use Webmin::Textbox;
|
||||
package WebminUI::Password;
|
||||
@ISA = ( "WebminUI::Textbox" );
|
||||
use WebminUI::Textbox;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::Password(name, value, [size])
|
||||
=head2 new WebminUI::Password(name, value, [size])
|
||||
Create a new text input field, for a password
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Password::new)) {
|
||||
return new Webmin::Theme::Password(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Password::new)) {
|
||||
return new WebminUI::Theme::Password(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $size) = @_;
|
||||
$self = new Webmin::Textbox($name, $value, $size);
|
||||
$self = new WebminUI::Textbox($name, $value, $size);
|
||||
bless($self);
|
||||
return $self;
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
package Webmin::PlainText;
|
||||
package WebminUI::PlainText;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::PlainText(text, columns)
|
||||
=head2 new WebminUI::PlainText(text, columns)
|
||||
Displays a block of plain fixed-width text, within a page or form.
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::PlainText::new) &&
|
||||
caller() !~ /Webmin::Theme::PlainText/) {
|
||||
return new Webmin::Theme::PlainText(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::PlainText::new) &&
|
||||
caller() !~ /WebminUI::Theme::PlainText/) {
|
||||
return new WebminUI::Theme::PlainText(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $text, $columns) = @_;
|
||||
$self = { 'columns' => 80 };
|
||||
@@ -84,7 +84,7 @@ foreach $rest (split(/\n/, $_[0])) {
|
||||
return @rv;
|
||||
}
|
||||
|
||||
=head2 set_page(Webmin::Page)
|
||||
=head2 set_page(WebminUI::Page)
|
||||
Called when this form is added to a page
|
||||
=cut
|
||||
sub set_page
|
||||
@@ -1,14 +1,14 @@
|
||||
package Webmin::Properties;
|
||||
package WebminUI::Properties;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::Properties([heading], [columns], [width])
|
||||
=head2 new WebminUI::Properties([heading], [columns], [width])
|
||||
Creates a read-only properties list
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Properties::new) &&
|
||||
caller() !~ /Webmin::Theme::Properties/) {
|
||||
return new Webmin::Theme::Properties(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Properties::new) &&
|
||||
caller() !~ /WebminUI::Theme::Properties/) {
|
||||
return new WebminUI::Theme::Properties(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $heading, $columns, $width) = @_;
|
||||
$self = { 'columns' => 2 };
|
||||
@@ -119,7 +119,7 @@ return $self->{'heading'};
|
||||
}
|
||||
|
||||
|
||||
=head2 set_page(Webmin::Page)
|
||||
=head2 set_page(WebminUI::Page)
|
||||
Called when this form is added to a page
|
||||
=cut
|
||||
sub set_page
|
||||
@@ -1,15 +1,15 @@
|
||||
package Webmin::Radios;
|
||||
use Webmin::Input;
|
||||
package WebminUI::Radios;
|
||||
use WebminUI::Input;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Input" );
|
||||
@ISA = ( "WebminUI::Input" );
|
||||
|
||||
=head2 new Webmin::Radios(name, value, &options, [disabled])
|
||||
=head2 new WebminUI::Radios(name, value, &options, [disabled])
|
||||
Create a list of radio buttons, of which one may be selected
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Radios::new)) {
|
||||
return new Webmin::Theme::Radios(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Radios::new)) {
|
||||
return new WebminUI::Theme::Radios(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $options, $disabled) = @_;
|
||||
$self = { };
|
||||
20
WebminUI/ResultPage.pm
Normal file
20
WebminUI/ResultPage.pm
Normal file
@@ -0,0 +1,20 @@
|
||||
package WebminUI::ResultPage;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new WebminUI::ResultPage(subheading, title, message, [help-name])
|
||||
Create a new page object for showing some success message.
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&WebminUI::Theme::ResultPage::new) &&
|
||||
caller() !~ /WebminUI::Theme::ResultPage/) {
|
||||
return new WebminUI::Theme::ResultPage(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $subheading, $title, $message, $help) = @_;
|
||||
$self = new WebminUI::Page($subheading, $title, $help);
|
||||
$self->add_message("<b>$message</b>");
|
||||
return $self;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package Webmin::Section;
|
||||
package WebminUI::Section;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::Section(header, [columns], [title], [width])
|
||||
=head2 new WebminUI::Section(header, [columns], [title], [width])
|
||||
Create a new form section, which has a header and contains some inputs
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Section::new) &&
|
||||
caller() !~ /Webmin::Theme::Section/) {
|
||||
return new Webmin::Theme::Section(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Section::new) &&
|
||||
caller() !~ /WebminUI::Theme::Section/) {
|
||||
return new WebminUI::Theme::Section(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $header, $columns, $title, $width) = @_;
|
||||
$self = { 'columns' => 4 };
|
||||
@@ -52,7 +52,7 @@ return $rv;
|
||||
}
|
||||
|
||||
=head2 add_input(label, input, [columns])
|
||||
Adds some Webmin::Input object to this form section
|
||||
Adds some WebminUI::Input object to this form section
|
||||
=cut
|
||||
sub add_input
|
||||
{
|
||||
@@ -140,7 +140,7 @@ return undef;
|
||||
}
|
||||
|
||||
=head2 set_form(form)
|
||||
Called by the Webmin::Form object when this section is added to it
|
||||
Called by the WebminUI::Form object when this section is added to it
|
||||
=cut
|
||||
sub set_form
|
||||
{
|
||||
@@ -165,7 +165,7 @@ sub is_input
|
||||
{
|
||||
my ($object) = @_;
|
||||
return ref($object) && ref($object) =~ /::/ &&
|
||||
$object->isa("Webmin::Input");
|
||||
$object->isa("WebminUI::Input");
|
||||
}
|
||||
|
||||
1;
|
||||
@@ -1,16 +1,16 @@
|
||||
package Webmin::Select;
|
||||
use Webmin::Input;
|
||||
package WebminUI::Select;
|
||||
use WebminUI::Input;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Input" );
|
||||
@ISA = ( "WebminUI::Input" );
|
||||
|
||||
=head2 new Webmin::Select(name, value|&values, &options, [multiple-size],
|
||||
=head2 new WebminUI::Select(name, value|&values, &options, [multiple-size],
|
||||
[add-missing], [disabled])
|
||||
Create a menu or multiple-selection field
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Select::new)) {
|
||||
return new Webmin::Theme::Select(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Select::new)) {
|
||||
return new WebminUI::Theme::Select(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $options, $size, $missing, $disabled) = @_;
|
||||
$self = { 'size' => 1 };
|
||||
@@ -1,16 +1,16 @@
|
||||
package Webmin::Submit;
|
||||
use Webmin::Input;
|
||||
package WebminUI::Submit;
|
||||
use WebminUI::Input;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Input" );
|
||||
@ISA = ( "WebminUI::Input" );
|
||||
|
||||
=head2 new Webmin::Submit(label, [name], [disabled])
|
||||
=head2 new WebminUI::Submit(label, [name], [disabled])
|
||||
Create a form submit button
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Submit::new) &&
|
||||
caller() !~ /Webmin::Theme::Submit/) {
|
||||
return new Webmin::Theme::Submit(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Submit::new) &&
|
||||
caller() !~ /WebminUI::Theme::Submit/) {
|
||||
return new WebminUI::Theme::Submit(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $value, $name, $disabled) = @_;
|
||||
$self = { };
|
||||
@@ -1,15 +1,15 @@
|
||||
package Webmin::Table;
|
||||
use Webmin::JavascriptButton;
|
||||
package WebminUI::Table;
|
||||
use WebminUI::JavascriptButton;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::Table(&headings, [width], [name], [heading])
|
||||
=head2 new WebminUI::Table(&headings, [width], [name], [heading])
|
||||
Create a multi-column table, with support for sorting, paging and so on
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Table::new) &&
|
||||
caller() !~ /Webmin::Theme::Table/) {
|
||||
return new Webmin::Theme::Table(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Table::new) &&
|
||||
caller() !~ /WebminUI::Theme::Table/) {
|
||||
return new WebminUI::Theme::Table(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $headings, $width, $name, $heading) = @_;
|
||||
$self = { 'sorter' => [ map { \&default_sorter } @$headings ] };
|
||||
@@ -59,12 +59,12 @@ if (defined($sm) && @srows > $sm) {
|
||||
$rv .= $self->get_searchmsg()."<br>\n";
|
||||
}
|
||||
|
||||
my $form = new Webmin::Form($thisurl, "get");
|
||||
my $form = new WebminUI::Form($thisurl, "get");
|
||||
$form->set_input($self->{'form'}->{'in'});
|
||||
my $section = new Webmin::Section(undef, 2);
|
||||
my $section = new WebminUI::Section(undef, 2);
|
||||
$form->add_section($section);
|
||||
|
||||
my $col = new Webmin::Select("ui_searchcol_".$name, undef);
|
||||
my $col = new WebminUI::Select("ui_searchcol_".$name, undef);
|
||||
my $i = 0;
|
||||
foreach my $h (@{$self->get_headings()}) {
|
||||
if ($self->{'sortable'}->[$i]) {
|
||||
@@ -74,12 +74,12 @@ if (defined($sm) && @srows > $sm) {
|
||||
}
|
||||
$section->add_input($text{'ui_searchcol'}, $col);
|
||||
|
||||
my $for = new Webmin::Textbox("ui_searchfor_".$name, undef, 30);
|
||||
my $for = new WebminUI::Textbox("ui_searchfor_".$name, undef, 30);
|
||||
$section->add_input($text{'ui_searchfor'}, $for);
|
||||
|
||||
$rv .= $section->html();
|
||||
my $url = $self->make_url(undef, undef, undef, undef, 1);
|
||||
my $jsb = new Webmin::JavascriptButton($text{'ui_searchok'},
|
||||
my $jsb = new WebminUI::JavascriptButton($text{'ui_searchok'},
|
||||
"window.location = '$url'+'&'+'ui_searchfor_${name}'+'='+escape(form.ui_searchfor_${name}.value)+'&'+'ui_searchcol_${name}'+'='+escape(form.ui_searchcol_${name}.selectedIndex)");
|
||||
$rv .= $jsb->html();
|
||||
$rv .= "<br>\n";
|
||||
@@ -252,7 +252,7 @@ if (@srows) {
|
||||
for(my $i=0; $i<@$r || $i<@sheadings; $i++) {
|
||||
if (ref($r->[$i]) eq "ARRAY") {
|
||||
my $j = $r->[$i]->[0] &&
|
||||
$r->[$i]->[0]->isa("Webmin::TableAction")
|
||||
$r->[$i]->[0]->isa("WebminUI::TableAction")
|
||||
? " | " : " ";
|
||||
$row[$i] = $selmap{$r,$i}.
|
||||
join($j, map { ref($_) ? $_->html() : $_ }
|
||||
@@ -278,7 +278,7 @@ return $rv;
|
||||
}
|
||||
|
||||
=head2 set_form(form)
|
||||
Called by the Webmin::Form object when this table is added to it
|
||||
Called by the WebminUI::Form object when this table is added to it
|
||||
=cut
|
||||
sub set_form
|
||||
{
|
||||
@@ -309,7 +309,7 @@ else {
|
||||
sub default_sorter
|
||||
{
|
||||
my ($value1, $value2, $col) = @_;
|
||||
if (ref($value1) && $value1->isa("Webmin::TableAction")) {
|
||||
if (ref($value1) && $value1->isa("WebminUI::TableAction")) {
|
||||
$value1 = $value1->get_value();
|
||||
$value2 = $value2->get_value();
|
||||
}
|
||||
@@ -432,7 +432,7 @@ return $self->{'headings'};
|
||||
}
|
||||
|
||||
=head2 set_selector(column, input)
|
||||
Takes a Webmin::Checkboxes or Webmin::Radios object, and uses it to add checkboxes
|
||||
Takes a WebminUI::Checkboxes or WebminUI::Radios object, and uses it to add checkboxes
|
||||
in the specified column.
|
||||
=cut
|
||||
sub set_selector
|
||||
@@ -1,15 +1,15 @@
|
||||
package Webmin::TableAction;
|
||||
package WebminUI::TableAction;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::TableAction(cgi, label, &args, disabled)
|
||||
=head2 new WebminUI::TableAction(cgi, label, &args, disabled)
|
||||
An object of this class can be added to a table or properties object to create
|
||||
a link or action button of some kind.
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::TableAction::new) &&
|
||||
caller() !~ /Webmin::Theme::TableAction/) {
|
||||
return new Webmin::Theme::TableAction(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::TableAction::new) &&
|
||||
caller() !~ /WebminUI::Theme::TableAction/) {
|
||||
return new WebminUI::Theme::TableAction(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $cgi, $value, $args, $disabled) = @_;
|
||||
$self = { };
|
||||
@@ -1,14 +1,14 @@
|
||||
package Webmin::Tabs;
|
||||
package WebminUI::Tabs;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::Tabs([&tabs])
|
||||
=head2 new WebminUI::Tabs([&tabs])
|
||||
Displayed at the top of a page, to allow selection of various pages
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
my ($self, $tabs) = @_;
|
||||
if (defined(&Webmin::Theme::Tabs::new)) {
|
||||
return new Webmin::Theme::Tabs(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Tabs::new)) {
|
||||
return new WebminUI::Theme::Tabs(@_[1..$#_]);
|
||||
}
|
||||
$self = { 'tabs' => [ ],
|
||||
'tab' => 0 };
|
||||
@@ -1,15 +1,15 @@
|
||||
package Webmin::Textarea;
|
||||
use Webmin::Input;
|
||||
package WebminUI::Textarea;
|
||||
use WebminUI::Input;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Input" );
|
||||
@ISA = ( "WebminUI::Input" );
|
||||
|
||||
=head2 new Webmin::Textarea(name, value, rows, cols, [wrap], [disabled])
|
||||
=head2 new WebminUI::Textarea(name, value, rows, cols, [wrap], [disabled])
|
||||
Create a new text box, with the given size
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Textarea::new)) {
|
||||
return new Webmin::Theme::Textarea(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Textarea::new)) {
|
||||
return new WebminUI::Theme::Textarea(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $rows, $cols, $wrap, $disabled) = @_;
|
||||
$self = { };
|
||||
@@ -113,7 +113,7 @@ Returns the value, without any \r characters
|
||||
sub get_value
|
||||
{
|
||||
my ($self) = @_;
|
||||
my $rv = Webmin::Input::get_value($self);
|
||||
my $rv = WebminUI::Input::get_value($self);
|
||||
$rv =~ s/\r//g;
|
||||
return $rv;
|
||||
}
|
||||
@@ -1,15 +1,15 @@
|
||||
package Webmin::Textbox;
|
||||
use Webmin::Input;
|
||||
package WebminUI::Textbox;
|
||||
use WebminUI::Input;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Input" );
|
||||
@ISA = ( "WebminUI::Input" );
|
||||
|
||||
=head2 new Webmin::Textbox(name, value, [size], [disabled])
|
||||
=head2 new WebminUI::Textbox(name, value, [size], [disabled])
|
||||
Create a new text input field
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Textbox::new)) {
|
||||
return new Webmin::Theme::Textbox(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Textbox::new)) {
|
||||
return new WebminUI::Theme::Textbox(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $size, $disabled) = @_;
|
||||
$self = { 'size' => 30 };
|
||||
@@ -1,16 +1,16 @@
|
||||
package Webmin::Time;
|
||||
use Webmin::Input;
|
||||
package WebminUI::Time;
|
||||
use WebminUI::Input;
|
||||
use Time::Local;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Input" );
|
||||
@ISA = ( "WebminUI::Input" );
|
||||
|
||||
=head2 new Webmin::Time(name, time, [disabled])
|
||||
=head2 new WebminUI::Time(name, time, [disabled])
|
||||
Create a new field for selecting a time
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Time::new)) {
|
||||
return new Webmin::Theme::Time(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Time::new)) {
|
||||
return new WebminUI::Theme::Time(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $disabled) = @_;
|
||||
bless($self = { });
|
||||
@@ -1,14 +1,14 @@
|
||||
package Webmin::TitleList;
|
||||
package WebminUI::TitleList;
|
||||
use WebminCore;
|
||||
|
||||
=head2 new Webmin::TitleList(title, &links, [alt-text])
|
||||
=head2 new WebminUI::TitleList(title, &links, [alt-text])
|
||||
Generates a title with a list of links under it
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
my ($self, $title, $links, $alt) = @_;
|
||||
if (defined(&Webmin::Theme::TitleList::new)) {
|
||||
return new Webmin::Theme::TitleList(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::TitleList::new)) {
|
||||
return new WebminUI::Theme::TitleList(@_[1..$#_]);
|
||||
}
|
||||
$self = { };
|
||||
bless($self);
|
||||
@@ -88,7 +88,7 @@ my ($self, $name, $link) = @_;
|
||||
push(@{$self->{'links'}}, [ $name, $link ]);
|
||||
}
|
||||
|
||||
=head2 set_page(Webmin::Page)
|
||||
=head2 set_page(WebminUI::Page)
|
||||
Called when this menu is added to a page
|
||||
=cut
|
||||
sub set_page
|
||||
@@ -1,15 +1,15 @@
|
||||
package Webmin::Upload;
|
||||
use Webmin::Input;
|
||||
package WebminUI::Upload;
|
||||
use WebminUI::Input;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Input" );
|
||||
@ISA = ( "WebminUI::Input" );
|
||||
|
||||
=head2 new Webmin::Upload(name, [size])
|
||||
=head2 new WebminUI::Upload(name, [size])
|
||||
Create a new file upload field
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::Upload::new)) {
|
||||
return new Webmin::Theme::Upload(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::Upload::new)) {
|
||||
return new WebminUI::Theme::Upload(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $size) = @_;
|
||||
$self = { 'size' => 30 };
|
||||
@@ -1,18 +1,18 @@
|
||||
package Webmin::User;
|
||||
use Webmin::Textbox;
|
||||
package WebminUI::User;
|
||||
use WebminUI::Textbox;
|
||||
use WebminCore;
|
||||
@ISA = ( "Webmin::Textbox" );
|
||||
@ISA = ( "WebminUI::Textbox" );
|
||||
|
||||
=head2 new Webmin::User(name, value, [multiple], [disabled])
|
||||
=head2 new WebminUI::User(name, value, [multiple], [disabled])
|
||||
A text box for entering or selecting one or many Unix usernames
|
||||
=cut
|
||||
sub new
|
||||
{
|
||||
if (defined(&Webmin::Theme::User::new)) {
|
||||
return new Webmin::Theme::User(@_[1..$#_]);
|
||||
if (defined(&WebminUI::Theme::User::new)) {
|
||||
return new WebminUI::Theme::User(@_[1..$#_]);
|
||||
}
|
||||
my ($self, $name, $value, $multiple, $disabled) = @_;
|
||||
$self = new Webmin::Textbox($name, $value, $multiple ? 40 : 15, $disabled);
|
||||
$self = new WebminUI::Textbox($name, $value, $multiple ? 40 : 15, $disabled);
|
||||
bless($self);
|
||||
$self->set_multiple($multiple);
|
||||
return $self;
|
||||
@@ -24,7 +24,7 @@ Returns the HTML for this user input
|
||||
sub html
|
||||
{
|
||||
my ($self) = @_;
|
||||
my $rv = Webmin::Textbox::html($self);
|
||||
my $rv = WebminUI::Textbox::html($self);
|
||||
my $name = $self->get_name();
|
||||
my $multiple = $self->get_multiple();
|
||||
local $w = $multiple ? 500 : 300;
|
||||
@@ -822,8 +822,11 @@ foreach my $l (@acl) {
|
||||
delete($gconfig{"lang_".$username});
|
||||
delete($gconfig{"notabs_".$username});
|
||||
delete($gconfig{"ownmods_".$username});
|
||||
delete($gconfig{"rbacdeny_".$username});
|
||||
delete($gconfig{"theme_".$username});
|
||||
delete($gconfig{"overlay_".$username});
|
||||
delete($gconfig{"readonly_".$username});
|
||||
delete($gconfig{"realname_".$username});
|
||||
&write_file("$config_directory/config", \%gconfig);
|
||||
|
||||
# Delete all module .acl files
|
||||
@@ -2163,5 +2166,21 @@ elsif ($str =~ /^postgresql:/) {
|
||||
}
|
||||
}
|
||||
|
||||
# used_for_anonymous(username)
|
||||
# Returns a list of modules this user has an anonymous grant to
|
||||
sub used_for_anonymous
|
||||
{
|
||||
my ($user) = @_;
|
||||
my @rv;
|
||||
my %miniserv;
|
||||
&get_miniserv_config(\%miniserv);
|
||||
foreach $a (split(/\s+/, $miniserv{'anonymous'})) {
|
||||
if ($a =~ /^([^=]+)=(\S+)$/ && $2 eq $user) {
|
||||
push(@rv, $1);
|
||||
}
|
||||
}
|
||||
return @rv;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ our (%in, %text, %config, %access, $base_remote_user);
|
||||
&error_setup($text{'delete_err'});
|
||||
$access{'delete'} || &error($text{'delete_ecannot'});
|
||||
&can_edit_user($in{'user'}) || &error($text{'delete_euser'});
|
||||
&used_for_anonymous($in{'user'}) && &error($text{'delete_eanonuser'});
|
||||
if ($base_remote_user eq $in{'user'}) {
|
||||
&error($text{'delete_eself'});
|
||||
}
|
||||
|
||||
@@ -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,9 +14,10 @@ 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'});
|
||||
}
|
||||
&used_for_anonymous($user) && &error($text{'delete_eanonuser'});
|
||||
my $uinfo = &get_user($user);
|
||||
$uinfo->{'readonly'} && &error($text{'udeletes_ereadonly'});
|
||||
}
|
||||
|
||||
@@ -362,6 +362,7 @@ rbac_ecpan=No tens acc
|
||||
rbac_ok=La integració amb RBAC està disponible en aquest sistema, i es pot activar en base a cada usuari a la pàgina d'Edició d'Usuaris Webmin.
|
||||
|
||||
udeletes_err=No s'han pogut suprimir els usuaris
|
||||
udeletes_jerr=No s'han pogut afegir els usuaris al grup
|
||||
udeletes_enone=No n'has seleccionat cap
|
||||
udeletes_title=Supressió d'Usuaris
|
||||
udeletes_rusure=Segur que vols suprimir els $1 usuaris seleccionats? Es perdran tots els seus detalls i totes les seves configuracions de control d'accés.
|
||||
|
||||
11
acl/lang/de
11
acl/lang/de
@@ -100,6 +100,7 @@ cpass_notre=Entspricht einen nicht erlaubten Muster
|
||||
cpass_old=Alte Kennwörter können nicht wieder verwendet werden
|
||||
cpass_re=Entspricht nicht einem erforderlichen Muster
|
||||
cpass_spellcmd=Entweder der $1 oder $2 Befehl muss installiert sein um eine Wörterbuchprüfung durchzuführen
|
||||
delete_eanonuser=Dieser Benutzer wird für anonymen Modul-Zugriff verwendet
|
||||
delete_ecannot=Sie haben keine Berechtigung Benutzer zu löschen
|
||||
delete_err=Fehler beim Löschen des Benutzers
|
||||
delete_eself=Sie können sich selber nicht löschen
|
||||
@@ -270,6 +271,7 @@ log_switch=Gewechselt zu Benutzer $1
|
||||
log_sync=Ändere Unixbenutzer-Syncronisation
|
||||
log_twofactor=Benutzer $1 mit 2-Faktor-Anbieter $2 angemeldet
|
||||
log_unix=Ändere Unixbenutzer-Authentifizierung
|
||||
logins_title=Aktuelle Webmin-Logins
|
||||
make_done=.. fertig
|
||||
make_err=Fehlgeschlagen Benutzer- und Gruppentabellen zu erstellen
|
||||
make_exec=Ausführe SQL $1 ..
|
||||
@@ -342,11 +344,17 @@ save_euser=Sie haben keine Berechtigung diesen Benutzer zu bearbeiten
|
||||
schema_desc=Bevor Webmin ein LDAP-Server verwenden kann um Benutzer und Gruppen zu speichern, muss konfiguriert werden, das Schema unten zu verwenden. Dies kann in der Regel durch Speicherung der Schema-Definition in <tt>/etc/ldap/schema</tt> oder <tt>/etc/openldap/schema</tt> als <tt>webmin.schema</tt>, anschließend kann die Konfiguration des Servers erfolgen, das Schema-Datei zu laden.
|
||||
schema_download=Download Schema-Datei : <a href=$1>$1</a>
|
||||
schema_title=Download LDAP-Schema
|
||||
sessions_desc=Aktuell angemeldete Webmin-Sitzungen sind unten aufgelistet. Zum Abbrechen einer bestehenden Sitzung und um den Benutzer zu zwingen sich neu anzumelden, klicken Sie auf die Sitzungs-ID.
|
||||
sessions_actions=Aktionen..
|
||||
sessions_host=IP-Adresse
|
||||
sessions_id=Sitzungs-ID
|
||||
sessions_in=Eingeloggt
|
||||
sessions_kill=Getrennt..
|
||||
sessions_login=Angemeldet an
|
||||
sessions_logouts=Zeige auch abgemeldete Sitzungen ..
|
||||
sessions_lview=Zeige Aufzeichnungen..
|
||||
sessions_out=Ausgeloggt
|
||||
sessions_state=Status
|
||||
sessions_this=Dieser Login
|
||||
sessions_title=Aktuell angemeldete Sitzungen
|
||||
sessions_user=Webminbenutzer
|
||||
sql_addto0=Hinzufügen neuer Benutzer zur Datenbank, wie oben ausgewählt
|
||||
@@ -421,6 +429,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
|
||||
|
||||
12
acl/lang/en
12
acl/lang/en
@@ -146,6 +146,7 @@ delete_err=Failed to delete user
|
||||
delete_eself=You cannot delete yourself
|
||||
delete_ecannot=You are not allowed to delete users
|
||||
delete_euser=You are not allowed to delete this user
|
||||
delete_eanonuser=This user is being used for anonymous module access
|
||||
|
||||
cert_title=Request Certificate
|
||||
cert_issue=Issue Certificate
|
||||
@@ -337,12 +338,20 @@ unix_header=Unix user authentication settings
|
||||
unix_utable=Allowed Unix users
|
||||
|
||||
sessions_title=Current Login Sessions
|
||||
sessions_desc=Current Webmin session logins are listed below. To cancel an existing session and force the user to login again, click on its session ID.
|
||||
sessions_id=Session ID
|
||||
sessions_user=Webmin user
|
||||
sessions_login=Logged in at
|
||||
sessions_host=IP address
|
||||
sessions_lview=View logs..
|
||||
sessions_actions=Actions..
|
||||
sessions_logouts=Also show logged-out sessions..
|
||||
sessions_state=State
|
||||
sessions_this=This login
|
||||
sessions_in=Logged in
|
||||
sessions_out=Logged out
|
||||
sessions_kill=Disconnect..
|
||||
|
||||
logins_title=Recent Webmin logins
|
||||
|
||||
hide_title=Hide Unused Modules
|
||||
hide_desc=The following modules will be removed from the module access list for $1 as their corresponding servers are not installed on your system ..
|
||||
@@ -362,6 +371,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.
|
||||
|
||||
@@ -100,6 +100,7 @@ cpass_notre=Matcher et
|
||||
cpass_old=Gamle passord kan ikke brukes på nytt
|
||||
cpass_re=Stemmer ikke med et påkrevd mønster
|
||||
cpass_spellcmd=Ingen av kommandoene $1 eller $2, som er nødvendige for å sjekke ordiliste-ord, er installert
|
||||
delete_eanonuser=Denne brukeren brukes til anonym modul tilgang
|
||||
delete_ecannot=Du har ikke rettigheter til å slette brukere
|
||||
delete_err=Kunne ikke slette bruker
|
||||
delete_eself=Du kan ikke slette deg selv
|
||||
@@ -421,6 +422,7 @@ twofactor_title=To-faktor autentisering
|
||||
udeletes_enone=Ingen valgt
|
||||
udeletes_ereadonly=En av de valgte brukerne er merket som ikke-redigerbar
|
||||
udeletes_err=Kunne ikke slette brukere
|
||||
udeletes_jerr=Kunne ikke legg til brukere i gruppe
|
||||
udeletes_ok=Slett brukere
|
||||
udeletes_rusure=Er du sikker på at du ønsker å slette de $1 valgte brukerne? Alle deres tilgangskontroll innstillinger og andre brukerdetaljer vil gå tapt.
|
||||
udeletes_title=Slett brukere
|
||||
|
||||
@@ -100,6 +100,7 @@ cpass_notre=Pasuje do niedozwolonego wzorca
|
||||
cpass_old=Nie można używać starych haseł
|
||||
cpass_re=Nie pasuje do wymaganego wzorca
|
||||
cpass_spellcmd=Nie zainstalowano komend $1 lub $2 wymaganych do sprawdzania słów ze słownika
|
||||
delete_eanonuser=Ten użytkownik jest wykorzystywany przy anonimowym dostępie do modułu
|
||||
delete_ecannot=Nie masz zezwolenia na usuwanie użytkowników
|
||||
delete_err=Nie udało się usunąć użytkownika
|
||||
delete_eself=Nie możesz usunąć samego siebie
|
||||
@@ -421,6 +422,7 @@ twofactor_title=Dwustopniowe uwierzytelnianie
|
||||
udeletes_enone=Nie wybrane
|
||||
udeletes_ereadonly=Jeden z wybranych użytkowników jest oznaczony jako nie-edytowalny
|
||||
udeletes_err=Błąd usuwanie użytkowników
|
||||
udeletes_jerr=Dodanie użytkowników do grupy nie powiodło się
|
||||
udeletes_ok=Usuń użytkowników
|
||||
udeletes_rusure=Czy jesteś pewny, że chcesz usunąć $1 wybranych użytkowników? Wszystkie ustawienia kontroli dostępu i szczegóły użytkowników zostaną utracone.
|
||||
udeletes_title=Usuń użytkowników
|
||||
|
||||
@@ -8,6 +8,7 @@ require './acl-lib.pl';
|
||||
our (%in, %text, %config, %access, %sessiondb);
|
||||
$access{'sessions'} || &error($text{'sessions_ecannot'});
|
||||
&ui_print_header(undef, $text{'sessions_title'}, "");
|
||||
&ReadParse();
|
||||
|
||||
my %miniserv;
|
||||
&get_miniserv_config(\%miniserv);
|
||||
@@ -21,27 +22,38 @@ foreach my $u (&list_users()) {
|
||||
|
||||
my $haslog = &foreign_available("webminlog");
|
||||
|
||||
print "<b>$text{'sessions_desc'}</b><p>\n";
|
||||
print &ui_columns_start([ $text{'sessions_id'},
|
||||
$text{'sessions_state'},
|
||||
$text{'sessions_user'},
|
||||
$text{'sessions_host'},
|
||||
$haslog ? ( $text{'sessions_login'} ) : ( ),
|
||||
"" ], 100);
|
||||
$text{'sessions_login'},
|
||||
$text{'sessions_actions'},
|
||||
], 100);
|
||||
foreach my $k (sort { my @a = split(/\s+/, $sessiondb{$a});
|
||||
my @b = split(/\s+/, $sessiondb{$b}); $b[1] <=> $a[1] }
|
||||
keys %sessiondb) {
|
||||
next if ($k =~ /^1111111/);
|
||||
my ($user, $ltime, $lip) = split(/\s+/, $sessiondb{$k});
|
||||
next if ($user =~ /^\!/ && !$in{'logouts'});
|
||||
next if ($miniserv{'logouttime'} &&
|
||||
$time_now - $ltime > $miniserv{'logouttime'}*60);
|
||||
my @cols;
|
||||
my $candel = 0;
|
||||
if ($k eq $main::session_id ||
|
||||
$k eq &hash_session_id($main::session_id)) {
|
||||
# Cannot self-terminate
|
||||
push(@cols, "<b>$k</b>");
|
||||
push(@cols, "<b><tt>$k</tt></b>");
|
||||
push(@cols, $text{'sessions_this'});
|
||||
}
|
||||
elsif ($user =~ s/^\!//) {
|
||||
# Already logged out
|
||||
push(@cols, "<tt>$k</tt>");
|
||||
push(@cols, $text{'sessions_out'});
|
||||
}
|
||||
else {
|
||||
push(@cols, ui_link("delete_session.cgi?id=$k", $k));
|
||||
push(@cols, "<tt>$k</tt>");
|
||||
push(@cols, $text{'sessions_in'});
|
||||
$candel = 1;
|
||||
}
|
||||
if ($hasuser{$user}) {
|
||||
push(@cols, ui_link("edit_user.cgi?user=$user", $user));
|
||||
@@ -54,12 +66,21 @@ foreach my $k (sort { my @a = split(/\s+/, $sessiondb{$a});
|
||||
}
|
||||
push(@cols, $lip);
|
||||
push(@cols, &make_date($ltime));
|
||||
my @links;
|
||||
if ($haslog) {
|
||||
push(@cols, ui_link("../webminlog/search.cgi?uall=1&mall=1&tall=1&wall=1&fall=1&sid=$k", $text{'sessions_lview'}));
|
||||
push(@links, ui_link("../webminlog/search.cgi?uall=1&mall=1&tall=1&wall=1&fall=1&sid=$k", $text{'sessions_lview'}));
|
||||
}
|
||||
if ($candel) {
|
||||
push(@links, ui_link("delete_session.cgi?id=$k", $text{'sessions_kill'}));
|
||||
}
|
||||
push(@cols, ui_links_row(\@links));
|
||||
print &ui_columns_row(\@cols);
|
||||
}
|
||||
print &ui_columns_end();
|
||||
if (!$in{'logouts'}) {
|
||||
print &ui_link("list_sessions.cgi?logouts=1",
|
||||
$text{'sessions_logouts'}),"<p>\n";
|
||||
}
|
||||
|
||||
&ui_print_footer("", $text{'index_return'});
|
||||
|
||||
|
||||
@@ -40,3 +40,4 @@ longdesc_ms_MY=Cipta pengguna Webmin dan konfigurasikan modul dan ciri-ciri yang
|
||||
desc_ms_MY=Pengguna Webmin
|
||||
longdesc_de=Erstellt Webmin-Benutzer und konfiguriert, auf welche Module und Funktionen diese berechtigt sind, zugreifen.
|
||||
longdesc_es=Crear usuarios de webmin y configurar a que modulos y caracteristicas pueden acceder.
|
||||
longdesc_pl=Twórz u¿ytkowników Webmina i kontroluj, które modu³y i funkcje s± dla nich dostêpne.
|
||||
|
||||
@@ -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'});
|
||||
|
||||
61
acl/system_info.pl
Normal file
61
acl/system_info.pl
Normal file
@@ -0,0 +1,61 @@
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
our (%text, $remote_user, %sessiondb, $module_name);
|
||||
do 'acl-lib.pl';
|
||||
|
||||
# list_system_info(&data, &in)
|
||||
# Show recent logins
|
||||
sub list_system_info
|
||||
{
|
||||
my ($data, $in) = @_;
|
||||
my @rv;
|
||||
my %miniserv;
|
||||
&get_miniserv_config(\%miniserv);
|
||||
&open_session_db(\%miniserv);
|
||||
my @logins;
|
||||
foreach my $k (keys %sessiondb) {
|
||||
next if ($k =~ /^1111111/);
|
||||
my ($user, $ltime, $lip) = split(/\s+/, $sessiondb{$k});
|
||||
next if ($user ne $remote_user && $user ne "!".$remote_user);
|
||||
push(@logins, [ $user, $ltime, $lip, $k ]);
|
||||
}
|
||||
if (@logins) {
|
||||
@logins = sort { $b->[1] <=> $a->[1] } @logins;
|
||||
if (@logins > 5) {
|
||||
@logins = @logins[0..4];
|
||||
}
|
||||
my $html = &ui_columns_start([ $text{'sessions_host'},
|
||||
$text{'sessions_login'},
|
||||
$text{'sessions_state'} ]);
|
||||
my $open = 0;
|
||||
foreach my $l (@logins) {
|
||||
my $state;
|
||||
if ($l->[0] =~ /^\!/) {
|
||||
$state = $text{'sessions_out'};
|
||||
}
|
||||
elsif ($l->[3] eq $main::session_id ||
|
||||
$l->[3] eq &hash_session_id($main::session_id)) {
|
||||
$state = "<font color=green>$text{'sessions_this'}</a>";
|
||||
}
|
||||
else {
|
||||
$state = $text{'sessions_in'};
|
||||
if ($l->[2] ne $ENV{'REMOTE_HOST'}) {
|
||||
$open++;
|
||||
$state = "<font color=orange>$state</font>";
|
||||
}
|
||||
}
|
||||
$html .= &ui_columns_row([ $l->[2],
|
||||
&make_date($l->[1]),
|
||||
$state ]);
|
||||
}
|
||||
$html .= &ui_columns_end();
|
||||
push(@rv, { 'type' => 'html',
|
||||
'desc' => $text{'logins_title'},
|
||||
'open' => $open,
|
||||
'id' => $module_name.'_logins',
|
||||
'priority' => -100,
|
||||
'html' => $html });
|
||||
}
|
||||
return @rv;
|
||||
}
|
||||
@@ -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'},
|
||||
|
||||
@@ -2,7 +2,7 @@ line2=Konfiguracja systemu,11
|
||||
pppoe_conf=Plik konfiguracji PPPOE ADSL,0
|
||||
conf_style=Format pliku konfiguracyjnego,1,0-Standardowa konfiguracja RP-PPPoE,1-Plik sieciowy Redhat
|
||||
pap_file=Plik kont PPP,0
|
||||
pppoe_cmd=Pełna ścieżka do komendy pppoe,0
|
||||
start_cmd=Komenda do podniesienia połączenia ADSL,0
|
||||
stop_cmd=Komenda do zamknięcia połączenia ADSL,0
|
||||
status_cmd=Komenda do pobrania stanu połączenia ADSL,0
|
||||
pppoe_cmd=Pełna ścieżka do polecenia pppoe,0
|
||||
start_cmd=Polecenie do podniesienia połączenia ADSL,0
|
||||
stop_cmd=Polecenie do zamknięcia połączenia ADSL,0
|
||||
status_cmd=Polecenie do pobrania stanu połączenia ADSL,0
|
||||
|
||||
6
adsl-client/help/connect.no.html
Executable file
6
adsl-client/help/connect.no.html
Executable file
@@ -0,0 +1,6 @@
|
||||
<header>Hvor lenge tilkobling forsøkes</header>
|
||||
|
||||
Når ADSL klient programmet startes, vil det forsøke å koble til din ISP så
|
||||
lenge som det er angitt i dette feltet. <p>
|
||||
|
||||
<hr>
|
||||
8
adsl-client/help/demand.no.html
Executable file
8
adsl-client/help/demand.no.html
Executable file
@@ -0,0 +1,8 @@
|
||||
<header>Koble til ved behov?</header>
|
||||
|
||||
Når Nei er valgt, vil ADSL tilkobling kun startes når det eksplisitt bes om det.
|
||||
Hvis Ja er valgt, vil tilkoblingen tas opp ved behov, og holdes oppe så lenge
|
||||
det går trafikk. Tidsavbruddet bestemmer hvor lenge tilkoblingen kan være
|
||||
inaktiv før den tas ned. <p>
|
||||
|
||||
<hr>
|
||||
@@ -24,3 +24,4 @@ desc_pl.UTF-8=Klient ADSL
|
||||
desc_no=ADSL klient
|
||||
longdesc_ms_MY=Sediakan klien PPP dengan pakej RP-PPPoE.
|
||||
desc_ms_MY=Klien ADSL
|
||||
longdesc_pl=Konfigurowanie klienta PPTP z pakietem RP-PPPoE.
|
||||
|
||||
Binary file not shown.
@@ -8,3 +8,4 @@ desc_pl=Tryb tekstowy (konsola)
|
||||
desc_hu=Shell hozzáférés (Ajaxterm)
|
||||
desc_ms_MY=Log masuk Teks
|
||||
longdesc_ms_MY=Akses shell pada sistem anda tanpa menggunakan klien SSH secara berasingan dengan menggunaka Ajaxterm
|
||||
longdesc_pl=Dostêp do pow³oki systemowej bez konieczno¶ci u¿ywania oddzielnego klienta SSH, u¿ywaj±c Ajaxterm
|
||||
|
||||
@@ -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)
|
||||
@@ -1330,7 +1334,8 @@ sub lock_apache_files
|
||||
{
|
||||
local $conf = &get_config();
|
||||
local $f;
|
||||
foreach $f (&unique(map { $_->{'file'} } @$conf)) {
|
||||
@main::locked_apache_files = &unique(map { $_->{'file'} } @$conf);
|
||||
foreach $f (@main::locked_apache_files) {
|
||||
&lock_file($f);
|
||||
}
|
||||
}
|
||||
@@ -1339,9 +1344,10 @@ sub unlock_apache_files
|
||||
{
|
||||
local $conf = &get_config();
|
||||
local $f;
|
||||
foreach $f (&unique(map { $_->{'file'} } @$conf)) {
|
||||
foreach $f (@main::locked_apache_files) {
|
||||
&unlock_file($f);
|
||||
}
|
||||
@main::locked_apache_files = ( );
|
||||
}
|
||||
|
||||
# directive_lines(directive, ...)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
@@ -220,6 +220,9 @@ 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/");
|
||||
|
||||
@@ -367,6 +367,7 @@ core_eaddress='$1' no
|
||||
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
|
||||
|
||||
@@ -367,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
|
||||
|
||||
@@ -186,6 +186,7 @@ core_edefchar=Manglende eller ugyldig tegnsett for dokumenter
|
||||
core_edefmime=Standard MIME type må være på formen type/undertype
|
||||
core_edefport=Ugyldig standard port
|
||||
core_edirlog=Feil-logg filen ligger ikke under tillatt katalog
|
||||
core_eduplisten=Lytte-adressen $1 er angitt to ganger
|
||||
core_eerror='$1' er ikke en gyldig feilkode
|
||||
core_eerrordir=Katalog for feillogg filen finnes ikke
|
||||
core_efilelog=Ugyldig feillogg fil
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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=Открытые...
|
||||
|
||||
@@ -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
|
||||
|
||||
123
apache/mod_php7.pl
Executable file
123
apache/mod_php7.pl
Executable file
@@ -0,0 +1,123 @@
|
||||
# mod_php7.pl
|
||||
|
||||
sub mod_php7_directives
|
||||
{
|
||||
$rv = [ [ 'php_value', 1, 16, 'virtual directory htaccess', undef, 10 ],
|
||||
[ 'php_flag', 1, 16, 'virtual directory htaccess', undef, 2 ],
|
||||
[ 'php_admin_value', 1, 16, 'virtual directory htaccess', undef, 10 ],
|
||||
[ 'php_admin_flag', 1, 16, 'virtual directory htaccess', undef, 2 ],
|
||||
];
|
||||
return &make_directives($rv, $_[0], "mod_php7");
|
||||
}
|
||||
|
||||
sub mod_php7_handlers
|
||||
{
|
||||
return ("php7-script");
|
||||
}
|
||||
|
||||
sub edit_php_value
|
||||
{
|
||||
return &php_value_form($_[0], "php_value");
|
||||
}
|
||||
|
||||
sub edit_php_admin_value
|
||||
{
|
||||
return &php_value_form($_[0], "php_admin_value");
|
||||
}
|
||||
|
||||
# php_value_form(&values, name)
|
||||
sub php_value_form
|
||||
{
|
||||
local($rv, $name, $value, $len);
|
||||
$rv = "";
|
||||
|
||||
$len = @{$_[0]} + 1;
|
||||
for($i=0; $i<$len; $i++) {
|
||||
if ($_[0]->[$i]->{'value'} =~ /^(\S+)\s+(.+)$/) {
|
||||
$name = $1; $value = $2;
|
||||
}
|
||||
else { $name = $value = ""; }
|
||||
$rv .= "<input name=mod_$_[1]_name_$i size=20 value='$name'> ";
|
||||
$rv .= "<input name=mod_$_[1]_value_$i size=30 value='$value'><BR>\n";
|
||||
}
|
||||
return (2, "$text{'mod_'.$_[1]}", $rv);
|
||||
}
|
||||
|
||||
sub save_php_value
|
||||
{
|
||||
return &php_value_save("php_value");
|
||||
}
|
||||
|
||||
sub save_php_admin_value
|
||||
{
|
||||
return &php_value_save("php_admin_value");
|
||||
}
|
||||
|
||||
# php_value_save(name)
|
||||
sub php_value_save
|
||||
{
|
||||
local($i, $name, $value, @rv);
|
||||
for($i=0; defined($in{"mod_$_[0]_name_$i"}); $i++) {
|
||||
$name = $in{"mod_$_[0]_name_$i"}; $value = $in{"mod_$_[0]_value_$i"};
|
||||
if ($name !~ /\S/ && $value !~ /\S/) { next; }
|
||||
$name =~ /^(\S+)$/ || &error(&text('mod_php_ename', $name));
|
||||
$value =~ /^(.+)$/ || &error(&text('mod_php_evalue', $name, $value));
|
||||
push(@rv, "$name $value");
|
||||
}
|
||||
return ( \@rv );
|
||||
}
|
||||
|
||||
sub edit_php_flag
|
||||
{
|
||||
return &php_flag_form($_[0], "php_flag");
|
||||
}
|
||||
|
||||
sub edit_php_admin_flag
|
||||
{
|
||||
return &php_flag_form($_[0], "php_admin_flag");
|
||||
}
|
||||
|
||||
# php_flag_form(&values, name)
|
||||
sub php_flag_form
|
||||
{
|
||||
local($rv, $name, $value, $len);
|
||||
$rv = "";
|
||||
|
||||
$len = @{$_[0]} + 1;
|
||||
for($i=0; $i<$len; $i++) {
|
||||
if ($_[0]->[$i]->{'value'} =~ /^(\S+)\s+(on|off)$/) {
|
||||
$name = $1; $value = $2;
|
||||
}
|
||||
else { $name = $value = ""; }
|
||||
$rv .= "<input name=mod_$_[1]_name_$i size=20 value='$name'> ";
|
||||
$rv .= "<input name=mod_$_[1]_value_$i type=radio value=on" . ($value eq "on" ? " checked" : "" ) . ">on ";
|
||||
$rv .= "<input name=mod_$_[1]_value_$i type=radio value=off" . ($value eq "off" ? " checked" : "" ) . ">off <BR>";
|
||||
}
|
||||
return (2, "$text{'mod_'.$_[1]}", $rv);
|
||||
}
|
||||
|
||||
sub save_php_flag
|
||||
{
|
||||
return &php_flag_save("php_flag");
|
||||
}
|
||||
|
||||
sub save_php_admin_flag
|
||||
{
|
||||
return &php_flag_save("php_admin_flag");
|
||||
}
|
||||
|
||||
# php_flag_save(name)
|
||||
sub php_flag_save
|
||||
{
|
||||
local($i, $name, $value, @rv);
|
||||
for($i=0; defined($in{"mod_$_[0]_name_$i"}); $i++) {
|
||||
$name = $in{"mod_$_[0]_name_$i"}; $value = $in{"mod_$_[0]_value_$i"};
|
||||
if ($name !~ /\S/ ) { next; }
|
||||
$name =~ /^(\S+)$/ || &error(&text('mod_php_ename', $name));
|
||||
$value =~ /^(on|off)$/i || &error(&text('mod_php_evalue', $name, $value));
|
||||
push(@rv, "$name $value");
|
||||
}
|
||||
return ( \@rv );
|
||||
}
|
||||
|
||||
1;
|
||||
@@ -37,7 +37,7 @@ return &parse_choice("SSLEngine");
|
||||
sub get_sslprotos
|
||||
{
|
||||
my @sslprotos = ("SSLv2", "SSLv3", "TLSv1" );
|
||||
if ($httpd_modules{'core'} >= 2.223) {
|
||||
if ($httpd_modules{'core'} >= 2.215) {
|
||||
push(@sslprotos, "TLSv1.1", "TLSv1.2");
|
||||
}
|
||||
return @sslprotos;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
at_style=Rodzaj systemu At,1,linux-Linux,solaris-Solaris,freebsd-FreeBSD
|
||||
at_dir=Katalog zadañ dla At,0
|
||||
at_dir=Katalog zadañ At,0
|
||||
allow_file=Plik dozwolonych u¿ytkowników At,3,Brak
|
||||
deny_file=Plik zabronionych u¿ytkowników At,3,Brak
|
||||
|
||||
@@ -30,3 +30,4 @@ desc_sk.UTF-8=Plánované príkazy
|
||||
desc_no=Tidsplanlagte kommandoer
|
||||
longdesc_ms_MY=Jadual pelaksanaan arahan one-off atau skrip.
|
||||
desc_ms_MY=Perintah Berjadual
|
||||
longdesc_pl=Harmonogram wykonywania poleceñ lub skryptów.
|
||||
|
||||
@@ -176,7 +176,7 @@ $rv .= "<td> $text{'backup_pass'} </td><td> ".
|
||||
&ui_password("$_[0]_pass", $mode == 1 ? $pass : undef, 20).
|
||||
"</td> </tr>\n";
|
||||
$rv .= "<tr> <td></td>\n";
|
||||
$rv .= "<td colspan='3'>$text{'backup_port'} ".
|
||||
$rv .= "<td colspan='4'>$text{'backup_port'} ".
|
||||
&ui_opt_textbox("$_[0]_port", $mode == 1 ? $port : undef, 5,
|
||||
$text{'default'})."</td> </tr>\n";
|
||||
|
||||
@@ -196,7 +196,7 @@ $rv .= "<td> $text{'backup_pass'} </td><td> ".
|
||||
&ui_password("$_[0]_spass", $mode == 2 ? $pass : undef, 20).
|
||||
"</td> </tr>\n";
|
||||
$rv .= "<tr> <td></td>\n";
|
||||
$rv .= "<td colspan='3'>$text{'backup_port'} ".
|
||||
$rv .= "<td colspan='4'>$text{'backup_port'} ".
|
||||
&ui_opt_textbox("$_[0]_sport", $mode == 2 ? $port : undef, 5,
|
||||
$text{'default'})."</td> </tr>\n";
|
||||
|
||||
@@ -204,7 +204,7 @@ if ($_[2] == 1) {
|
||||
# Uploaded file field
|
||||
$rv .= "<tr><td>".&ui_oneradio("$_[0]_mode", 3, undef, $mode == 3).
|
||||
"</td>\n";
|
||||
$rv .= "<td colspan=3>$text{'backup_mode3'} ".
|
||||
$rv .= "<td colspan=4>$text{'backup_mode3'} ".
|
||||
&ui_upload("$_[0]_upload", 40).
|
||||
"</td> </tr>\n";
|
||||
}
|
||||
@@ -212,7 +212,7 @@ elsif ($_[2] == 2) {
|
||||
# Output to browser option
|
||||
$rv .= "<tr><td>".&ui_oneradio("$_[0]_mode", 4, undef, $mode == 4).
|
||||
"</td>\n";
|
||||
$rv .= "<td colspan=3>$text{'backup_mode4'}</td> </tr>\n";
|
||||
$rv .= "<td colspan=4>$text{'backup_mode4'}</td> </tr>\n";
|
||||
}
|
||||
|
||||
$rv .= "</table>\n";
|
||||
@@ -707,7 +707,7 @@ elsif ($mode == 4) {
|
||||
|
||||
=head2 date_subs(string)
|
||||
|
||||
Given a string with strftime-style format characters in it like %Y and %S,
|
||||
Given a string with strftime-style format characters in it like %Y and %S,
|
||||
replaces them with the correct values for the current date and time.
|
||||
|
||||
=cut
|
||||
|
||||
@@ -11,6 +11,7 @@ our (%in, %text, %config, $module_config_file);
|
||||
&error_setup($text{'backup_err'});
|
||||
my $dest = &parse_backup_destination("dest", \%in);
|
||||
my ($configfile, $nofiles, $others) = &parse_backup_what("what", \%in);
|
||||
$others ||= "";
|
||||
my @mods = split(/\0/, $in{'mods'});
|
||||
@mods || ($nofiles && !$configfile) || &error($text{'backup_emods'});
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
date_subs=Wykonać zastępowanie <tt>strftime</tt> miejsc docelowych kopii zapasowej?,1,1-Tak,0-Nie
|
||||
webmin_subs=Uczynić Webmin podstawową zmienną jako miejsce docelowe kopii zapasowych?,1,1-Tak,0-Nie
|
||||
webmin_subs=Uczynić zmienną Webmina jako miejsce docelowe kopii zapasowych?,1,1-Tak,0-Nie
|
||||
from_addr=Od: adres dla wiadomości email,3,webmin@hostname
|
||||
|
||||
@@ -85,7 +85,8 @@ print &ui_form_start("restore.cgi", "form-data");
|
||||
print &ui_table_start($text{'index_header2'}, undef, 2);
|
||||
|
||||
print &ui_table_row($text{'edit_mods2'},
|
||||
&ui_select("mods", \@dmods,
|
||||
&ui_select("mods",
|
||||
[ map { $_->{'dir'} } @mods ],
|
||||
[ map { [ $_->{'dir'}, $_->{'desc'} ] } @mods ],
|
||||
5, 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 ...
|
||||
|
||||
@@ -28,3 +28,4 @@ desc_sk.UTF-8=Záloha konfiguračných súborov
|
||||
desc_no=Sikkerhetskopier konfig.filer
|
||||
longdesc_ms_MY=Lakukan salinan secara manual atau berjadual dan mengembalikan fail konfigurasi yang diuruskan oleh modul Webmin.
|
||||
desc_ms_MY=Backup Fail konfigurasi
|
||||
longdesc_pl=Rêczne lub zaplanowane tworzenie i przywracanie kopii zapasowych plików konfiguracyjnych modu³ów zarz±dzanych przez Webmina.
|
||||
|
||||
@@ -76,6 +76,15 @@ if (!defined($config_file_cache{$file})) {
|
||||
if (/^\s*\@(.*\S)/) {
|
||||
# An include file reference .. parse it
|
||||
local $incfile = $1;
|
||||
# A pipe command
|
||||
if ($incfile =~ /^\|"(.*)"$/) {
|
||||
local $command = $1;
|
||||
local $incfiles = `$command`;
|
||||
foreach (split(/\s/,$incfiles)) {
|
||||
local $inc = &read_config_file(substr($_,1));
|
||||
push(@{$parent->{'members'}}, @$inc);
|
||||
}
|
||||
}
|
||||
if ($incfile !~ /^\//) {
|
||||
$incfile = "$config{'bacula_dir'}/$incfile";
|
||||
}
|
||||
@@ -552,7 +561,8 @@ sub is_bacula_running
|
||||
local ($proc) = @_;
|
||||
if (&has_command($bacula_cmd)) {
|
||||
# Get status from bacula status command
|
||||
$bacula_status_cache ||= `$bacula_cmd status 2>&1 </dev/null`;
|
||||
$bacula_status_cache ||=
|
||||
&backquote_command("$bacula_cmd status 2>&1 </dev/null");
|
||||
if ($bacula_status_cache =~ /\Q$proc\E\s+\(pid\s+([0-9 ]+)\)\s+is\s+running/i ||
|
||||
$bacula_status_cache =~ /\Q$proc\E\s+is\s+running/i) {
|
||||
return 1;
|
||||
@@ -819,17 +829,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/ ||
|
||||
$l =~ /^\s*Name\s*=\s*"(.*)"/) {
|
||||
if ($l =~ /^Job:\s+name=([^=]*\S)\s/i ||
|
||||
$l =~ /^\s*Name\s*=\s*"(.*)"/i) {
|
||||
$job = { 'name' => $1 };
|
||||
push(@rv, $job);
|
||||
}
|
||||
elsif (($l =~ /Client:\s+name=([^=]*\S)\s/ ||
|
||||
$l =~ /^\s*Client\s*=\s*"(.*)"/) && $job) {
|
||||
elsif (($l =~ /Client:\s+name=([^=]*\S)\s/i ||
|
||||
$l =~ /^\s*Client\s*=\s*"(.*)"/i) && $job) {
|
||||
$job->{'client'} = $1;
|
||||
}
|
||||
elsif (($l =~ /FileSet:\s+name=([^=]*\S)\s/ ||
|
||||
$l =~ /^FileSet\s*=\s*"(.*)"/) && $job) {
|
||||
elsif (($l =~ /FileSet:\s+name=([^=]*\S)\s/i ||
|
||||
$l =~ /^FileSet\s*=\s*"(.*)"/i) && $job) {
|
||||
$job->{'fileset'} = $1;
|
||||
}
|
||||
}
|
||||
@@ -846,21 +856,21 @@ 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/ ||
|
||||
$l =~ /^\s*Name\s*=\s*"(.*)"/) {
|
||||
if ($l =~ /^Client:\s+name=([^=]*\S)\s/i ||
|
||||
$l =~ /^\s*Name\s*=\s*"(.*)"/i) {
|
||||
$client = { 'name' => $1 };
|
||||
if ($l =~ /address=(\S+)/ && $client) {
|
||||
if ($l =~ /address=(\S+)/i && $client) {
|
||||
$client->{'address'} = $1;
|
||||
}
|
||||
if ($l =~ /FDport=(\d+)/ && $client) {
|
||||
if ($l =~ /FDport=(\d+)/i && $client) {
|
||||
$client->{'port'} = $1;
|
||||
}
|
||||
push(@rv, $client);
|
||||
}
|
||||
elsif ($l =~ /^\s*Address\s*=\s*"(.*)"/ && $client) {
|
||||
elsif ($l =~ /^\s*Address\s*=\s*"(.*)"/i && $client) {
|
||||
$client->{'address'} = $1;
|
||||
}
|
||||
elsif ($l =~ /^\s*FDport\s*=\s*"(.*)"/ && $client) {
|
||||
elsif ($l =~ /^\s*FDport\s*=\s*"(.*)"/i && $client) {
|
||||
$client->{'port'} = $1;
|
||||
}
|
||||
}
|
||||
@@ -877,21 +887,21 @@ 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/ ||
|
||||
$l =~ /^\s*Name\s*=\s*"(.*)"/) {
|
||||
if ($l =~ /^Storage:\s+name=([^=]*\S)\s/i ||
|
||||
$l =~ /^\s*Name\s*=\s*"(.*)"/i) {
|
||||
$storage = { 'name' => $1 };
|
||||
if ($l =~ /address=(\S+)/) {
|
||||
if ($l =~ /address=(\S+)/i) {
|
||||
$storage->{'address'} = $1;
|
||||
}
|
||||
if ($l =~ /SDport=(\d+)/) {
|
||||
if ($l =~ /SDport=(\d+)/i) {
|
||||
$storage->{'port'} = $1;
|
||||
}
|
||||
push(@rv, $storage);
|
||||
}
|
||||
elsif ($l =~ /^\s*Address\s*=\s*"(.*)"/ && $storage) {
|
||||
elsif ($l =~ /^\s*Address\s*=\s*"(.*)"/i && $storage) {
|
||||
$storage->{'address'} = $1;
|
||||
}
|
||||
elsif ($l =~ /^\s*SDport\s*=\s*"(.*)"/ && $storage) {
|
||||
elsif ($l =~ /^\s*SDport\s*=\s*"(.*)"/i && $storage) {
|
||||
$storage->{'port'} = $1;
|
||||
}
|
||||
}
|
||||
@@ -908,15 +918,15 @@ 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/ ||
|
||||
$l =~ /^\s*Name\s*=\s*"(.*)"/) {
|
||||
if ($l =~ /^Pool:\s+name=([^=]*\S)\s/i ||
|
||||
$l =~ /^\s*Name\s*=\s*"(.*)"/i) {
|
||||
$pool = { 'name' => $1 };
|
||||
if ($l =~ /PoolType=(\S+)/) {
|
||||
if ($l =~ /PoolType=(\S+)/i) {
|
||||
$pool->{'type'} = $1;
|
||||
}
|
||||
push(@rv, $pool);
|
||||
}
|
||||
elsif ($l =~ /^\s*PoolType\s*=\s*"(.*)"/ && $pool) {
|
||||
elsif ($l =~ /^\s*PoolType\s*=\s*"(.*)"/i && $pool) {
|
||||
$pool->{'type'} = $1;
|
||||
}
|
||||
}
|
||||
@@ -1011,7 +1021,7 @@ foreach my $l (split(/\r?\n/, $status)) {
|
||||
'name' => &job_name("$2"),
|
||||
'status' => $4 });
|
||||
}
|
||||
elsif ($sect == 2 && $l =~ /^\s*Backup\s+Job\s+started:\s+(\S+\s+\S+)/) {
|
||||
elsif ($sect == 2 && $l =~ /^\s*Backup\s+Job\s+started:\s+(\S+\s+\S+)/i) {
|
||||
$run[$#run]->{'date'} = $1;
|
||||
}
|
||||
elsif ($sect == 3 && $l =~ /^\s*(\d+)\s+(\S+)\s+([0-9,]+)\s+([0-9,]+\.[0-9,]+\s+\S+|\d+)\s+(\S+)\s+(\S+\s+\S+)\s+(\S+)\s*$/) {
|
||||
@@ -1047,7 +1057,7 @@ foreach my $l (split(/\r?\n/, $status)) {
|
||||
if ($l =~ /^Running\s+Jobs/i) { $sect = 2; }
|
||||
elsif ($l =~ /^Terminated\s+Jobs/i) { $sect = 3; }
|
||||
|
||||
if ($sect == 2 && $l =~ /^\s*Backup\s+Job\s+(\S+)\.(\d+\-\d+\-\S+)\s+(.*)/) {
|
||||
if ($sect == 2 && $l =~ /^\s*Backup\s+Job\s+(\S+)\.(\d+\-\d+\-\S+)\s+(.*)/i) {
|
||||
push(@run, { 'name' => &job_name("$1"),
|
||||
'status' => $3 });
|
||||
}
|
||||
@@ -1061,7 +1071,7 @@ foreach my $l (split(/\r?\n/, $status)) {
|
||||
$run[$#run]->{'volume'} = $4;
|
||||
$run[$#run]->{'device'} = $6;
|
||||
}
|
||||
elsif ($sect == 3 && $l =~ /^\s*(\d+)\s+(\S+)\s+([0-9,]+)\s+([0-9,]+\.[0-9,]+\s+\S+|\d+)\s+(\S+)\s+(\S+\s+\S+)\s+(\S+)\s*$/) {
|
||||
elsif ($sect == 3 && $l =~ /^\s*(\d+)\s+(\S+)\s+([0-9,]+)\s+([0-9,]+\.[0-9,]+\s+\S+|\d+)\s+(\S+)\s+(\S+\s+\S+)\s+(\S+)\s*$/i) {
|
||||
push(@done, { 'id' => $1,
|
||||
'level' => &full_level("$2"),
|
||||
'files' => &remove_comma("$3"),
|
||||
|
||||
17
bacula-backup/config.info.no
Normal file
17
bacula-backup/config.info.no
Normal file
@@ -0,0 +1,17 @@
|
||||
line0=Konfigurerbare innstillinger,11
|
||||
wait=Standard sikkerhetskopi ventemodus,1,1-Vent p� fullf�ring,0-Kj�r i bakgrunnen
|
||||
apply=Ta i bruk katalog-konfigurasjon automatisk?,1,1-Ja,0-Nei
|
||||
groupmode=Hent node gruppe informasjon fra,1,webmin-Webmin Tjenere indeks modul,oc-OCM Manager database,-Ingen steder
|
||||
showdirs=Vis alltid eksterne kataloger?,1,1-Ja,0-Nei
|
||||
line1=Bacula databaseinnstillinger,11
|
||||
driver=Databasetype,1,Pg-PostgreSQL,mysql-MySQL,SQLite-SQLite
|
||||
user=Bruker det skal logges inn p� databasen som,0
|
||||
pass=Passord det skal logges inn med,0
|
||||
host=Bacula databasetjener,3,Dette system
|
||||
db=Database eller fil som inneholder Bacula informasjon,0
|
||||
line2=Filinnstillinger,11
|
||||
bacula_dir=Bacula konfigurasjonskatalog,0
|
||||
bextract=Full sti til <tt>bextract</tt> kommando,0
|
||||
bls=Full sti til <tt>bls</tt> kommando,0
|
||||
btape=Full sti til <tt>btape</tt> kommando,0
|
||||
init_start=Start og stopp Bacula vha.1,1-Init scripts,0-<tt>bacula</tt> kommando
|
||||
@@ -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>
|
||||
|
||||
619
bacula-backup/lang/no
Normal file
619
bacula-backup/lang/no
Normal file
@@ -0,0 +1,619 @@
|
||||
__norefs=1
|
||||
apply_err=Kunne ikke ta i bruk konfigurasjon
|
||||
apply_failed=En konfigurasjonsfeil ble oppdaget
|
||||
apply_problem=Kunne ikke ta i bruk konfigurasjon : $1
|
||||
backup_done=.. sikkerhetskopi fullført.
|
||||
backup_ejob=.. kunne ikke finne jobb!
|
||||
backup_eok=.. jobben kunne ikke startes
|
||||
backup_failed=.. sikkerhetskopieringen ble ikke fullført. Sjekk feilmeldingen ovenfor for detaljer om dette.
|
||||
backup_header=Detaljer for sikkerhetskopi-jobb
|
||||
backup_jd=$1 (Filsett $2 på $3)
|
||||
backup_job=Jobb som skal kjøres
|
||||
backup_ok=Sikkerhetskopier nå
|
||||
backup_return=backup skjema
|
||||
backup_run=Starter sikkerhetskopi-jobb $1 ..
|
||||
backup_running=.. sikkerhetskopi-jobben kjører nå. Når den er ferdig vises resultatene nedenfor ..
|
||||
backup_running2=.. sikkerhetskopieringen er startet i bakgrunnen.
|
||||
backup_title=Kjør backup jobb
|
||||
backup_wait=Vent på resultater?
|
||||
cancel_enone=Ingen valgt
|
||||
cancel_err=Kunne ikke avrbyte jobber
|
||||
check_ebacula=Baculas kontroll-kommando $1 ble ikke funnet.
|
||||
check_eclient=Dette systemet ser ut til å være en <a href='$2'>Bacula klient</a> i stedet for en regissør.
|
||||
check_econfigs=Fant ingen Bacula konfigurasjonsfiler i $1
|
||||
check_econsole=Bacula konsoll kommandoen $1 ble ikke funnet.
|
||||
check_edir=Bacula konfigurasjonskatalogen $1 ble ikke funnet på systemet ditt.
|
||||
check_edirector=Bacula regissør konfigurasjonsfilen $1 ble ikke funnet.
|
||||
check_engmod=Modulen OpenCountry Bacula grupper er ikke installert
|
||||
check_eservers=Ingen Webmin tjenergrupper er definert
|
||||
chooser_all=Alle
|
||||
chooser_days=Datoer
|
||||
chooser_daysh=Dager i måneden å utføre
|
||||
chooser_edays=Ingen dager i måneden valgt
|
||||
chooser_edaysrange=Valgte dager i måneden må være sammenhengende
|
||||
chooser_ehour=Manglende eller ugyldig time på dagen
|
||||
chooser_eminute=Manglende eller ugyldig minutt
|
||||
chooser_emonths=Ingen måneder valgt
|
||||
chooser_emonthsrange=Valgte måneder må være sammehengende
|
||||
chooser_err=Kunne ikke velge tidsplan
|
||||
chooser_eweekdaynums=Ingen ukedag tall valgt
|
||||
chooser_eweekdaynumsrange=Valgte ukedag numre må være sammenhengende
|
||||
chooser_eweekdays=Ingen ukedager valgt
|
||||
chooser_eweekdaysrange=Valgte ukedager må være sammenhengende
|
||||
chooser_months=Måneder i året
|
||||
chooser_monthsh=Måneder å utføre
|
||||
chooser_ok=OK
|
||||
chooser_sel=Valgt nedenfor ..
|
||||
chooser_time=Time og minutt
|
||||
chooser_timeh=Tidspunkt for utføring
|
||||
chooser_title=Velg tidsplan
|
||||
chooser_weekdaynums=Numre i måned
|
||||
chooser_weekdays=Ukedager
|
||||
chooser_weekdaysh=Ukedager å utføre
|
||||
client_address=Vertsnavn eller IP adresse
|
||||
client_catalog=Katalog som skal brukes
|
||||
client_eaddress=Manglende eller ugyldig vertsnavn eller adresse
|
||||
client_echild=Denne klienten kan ikke slettes siden den brukes av $1
|
||||
client_eclash=En klient med samme navn finnes allerede
|
||||
client_efileret=Manglende eller ugyldig oppbevaringsperiode for filer
|
||||
client_egone=Klient finnes ikke lenger!
|
||||
client_ejobret=Manglende eller ugyldig oppbevaringsperiode for jobber
|
||||
client_ename=Manglende eller ugyldig klientnavn
|
||||
client_epass=Manglende passord
|
||||
client_eport=Manglende eller ugyldig FD port
|
||||
client_err=Kunne ikke lagre backup klient
|
||||
client_fileret=Behold backupfiler i
|
||||
client_header=Detaljer for klient som skal sikkerhetskopieres
|
||||
client_jobret=Behold backupjobber i
|
||||
client_name=Klient FD navn
|
||||
client_pass=Bacula FD passord
|
||||
client_port=Bacula FD port
|
||||
client_prune=Fjern utløpte jobber og filer?
|
||||
client_status=Vis status
|
||||
client_title1=Opprett backup klient
|
||||
client_title2=Rediger sikkerhetskopi-klient
|
||||
clients_add=Legg til ny backup klient.
|
||||
clients_address=Vertsnavn eller adresse
|
||||
clients_catalog=Katalog
|
||||
clients_delete=Slett valgte klienter
|
||||
clients_derr=Kunne ikke slette klienter
|
||||
clients_name=Klient navn
|
||||
clients_none=Ingen backup klienter er definert enda.
|
||||
clients_return=liste med klienter
|
||||
clients_title=Backup klienter
|
||||
clientstatus_err=Kunne ikke hente status fra $1 : $2
|
||||
clientstatus_msg=Status fra $1 : $2
|
||||
clientstatus_ok=OK
|
||||
clientstatus_on=$1 (på $2)
|
||||
clientstatus_show=Vis status for klient:
|
||||
clientstatus_title=Klient status
|
||||
connect_elogin=Kunne ikke logge inn i databasen $1 : $2.
|
||||
connect_emysql=Kunne ikke laste datbase DBI driver $1
|
||||
connect_equery=Databasen $1 ser ikke ut til å inneholde Bacula tabeller.
|
||||
connect_equery2=Dette kan være fordi SQLLite Perl modulen som er installert, er for ny, og ikke støtter det eldre SQLite databaseformatet som Bacula bruker.
|
||||
connect_equery3=Databasen $1 ser ikke ut til å inneholde OC Bacula gruppe tabeller.
|
||||
device_always=Hold alltid åpen?
|
||||
device_auto=Monter automatisk?
|
||||
device_device=Arkiv-enhet eller katalog
|
||||
device_echild=Denne klienten kan ikke slettes siden den brukes av $1
|
||||
device_eclash=En lagringsenhet med samme navn finnes allerede
|
||||
device_edevice=Manglende eller ugyldig arkiv-enhet eller -katalog
|
||||
device_egone=Lagringsenhet finnes ikke lenger!
|
||||
device_emedia=Mangler media type navn
|
||||
device_ename=Mangler navn på lagringsenhet
|
||||
device_err=Kunne ikke lagre lagrings-enhet
|
||||
device_header=Detaljer for fillagrings enhet
|
||||
device_label=Merk media automatisk?
|
||||
device_media=Media type navn
|
||||
device_name=Lagringsenhet navn
|
||||
device_random=Direktetilgangs-medium?
|
||||
device_removable=Flyttbare media?
|
||||
device_title1=Opprett lagringsenhet
|
||||
device_title2=Rediger lagringsenhet
|
||||
devices_add=Legg til ny lagringsenhet.
|
||||
devices_delete=Slett valgte lagringsenheter
|
||||
devices_derr=Kunne ikke slette lagringsenheter
|
||||
devices_device=Enhets-fil eller -katalog
|
||||
devices_name=Enhetsnavn
|
||||
devices_none=Ingen lagringsenheter er definert enda.
|
||||
devices_return=liste med lagringsenheter
|
||||
devices_title=Lagringsenheter
|
||||
devices_type=Media type
|
||||
director_dir=Bacula arbeidskatalog
|
||||
director_edir=Manglende eller ikke-eksisterende arbeidskatalog
|
||||
director_ejobs=Manglende eller ugyldig antall samtidige jobber
|
||||
director_ename=Manglende eller ugyldig regissør navn
|
||||
director_enone=Ingen regissør-konfigurasjon funnet!
|
||||
director_eport=Manglende eller ugyldig portnummer
|
||||
director_err=Kunne ikke lagre regissør-konfigurasjon
|
||||
director_header=Globale innstillinger for Bacula regissør
|
||||
director_jobs=Maks. samtidige jobber
|
||||
director_messages=Mål for meldinger
|
||||
director_name=Regissør navn
|
||||
director_port=Lytt på port
|
||||
director_title=Regissør konfigurasjon
|
||||
dirstatus_bytes=Størrelse
|
||||
dirstatus_cancel=Avbryt valgte jobber
|
||||
dirstatus_date=Kjørt
|
||||
dirstatus_date2=Startet
|
||||
dirstatus_done=Fullførte sikkerhetskopi jobber
|
||||
dirstatus_donenone=Ingen backup jobber er kjørt.
|
||||
dirstatus_files=Filer
|
||||
dirstatus_id=Kjøre ID
|
||||
dirstatus_level=Nivå
|
||||
dirstatus_name=Jobbnavn
|
||||
dirstatus_refresh=Oppfrisk liste
|
||||
dirstatus_run=Kjørende backup jobber
|
||||
dirstatus_runnone=Ingen backup jobber kjører for øyeblikket.
|
||||
dirstatus_sched=Tidsplanlagte sikkerhetskopi jobber
|
||||
dirstatus_schednone=Ingen sikkerhetskopi jobber er tidsplanlagt for øyeblikket.
|
||||
dirstatus_status=Gjeldende status
|
||||
dirstatus_status2=Status
|
||||
dirstatus_title=Regissør status
|
||||
dirstatus_type=Type
|
||||
dirstatus_volume=Volum
|
||||
dvolumes_ebacula=Bacula feil : $1
|
||||
dvolumes_enone=Ingen valgt
|
||||
dvolumes_err=Kunne ikke slette volumer
|
||||
esql=SQL feil : $1
|
||||
fdirector_eclash=En regissør med samme navn finnes allerede
|
||||
fdirector_egone=Regissør finnes ikke lenger!
|
||||
fdirector_ename=Mangler regissørnavn
|
||||
fdirector_epass=Manglende passord
|
||||
fdirector_err=Kunne ikke lagre fil daemon regissør
|
||||
fdirector_header=Detaljer for kontrollerende ekstern regissør
|
||||
fdirector_monitor=Tillat bare overvåkings-tilkobling?
|
||||
fdirector_name=Director navn
|
||||
fdirector_pass=Akseptert passord
|
||||
fdirector_title1=Opprett fil daemon regissør
|
||||
fdirector_title2=Rediger fil daemon regissør
|
||||
fdirectors_add=Legg til ny regissør.
|
||||
fdirectors_delete=Slett valgte regissører
|
||||
fdirectors_derr=Kunne ikke slette regissører
|
||||
fdirectors_name=Regissørnavn
|
||||
fdirectors_none=Ingen regissører er definert enda.
|
||||
fdirectors_pass=Akseptert passord
|
||||
fdirectors_return=list over regissører
|
||||
fdirectors_title=Fil Daemon regissører
|
||||
file_dir=Bacula arbeidskatalog
|
||||
file_edir=Manglende eller ikke-eksisterende arbeidskatalog
|
||||
file_ejobs=Manglende eller ugyldig antall samtidige jobber
|
||||
file_ename=Manglende eller ugyldig fil daemon navn
|
||||
file_enone=Ingen fil daemon konfigurasjon funnet!
|
||||
file_eport=Manglende eller ugyldig portnummer
|
||||
file_err=Kunne ikke lagre fil daemon konfigurasjon
|
||||
file_header=Innstillinger for Bacula fil daemon
|
||||
file_jobs=Maks. samtidige jobber
|
||||
file_name=Fil daemon navn
|
||||
file_port=Lytt på port
|
||||
file_title=Fil daemon konfigurasjon
|
||||
fileset_comp=Komprimeringstype
|
||||
fileset_echild=Dette filsettet kan ikke slettes siden det brukes av $1
|
||||
fileset_eclash=Et fil-sett med samme navn finnes allerede
|
||||
fileset_egone=Filsettet finnes ikke lenger!
|
||||
fileset_ename=Mangler fil-sett navn
|
||||
fileset_err=Kunne ikke lagre filsett
|
||||
fileset_exclude=Filer og kataloger som skal hoppes over
|
||||
fileset_gzip=Gzip nivå $1
|
||||
fileset_gzipdef=<Standard komprimeringsnivå>
|
||||
fileset_header=Detaljer for backup filsett
|
||||
fileset_include=Filer og kataloger som skal sikkerhetskopieres
|
||||
fileset_lzo=LZO komprimering
|
||||
fileset_md5=MD5
|
||||
fileset_name=Filsett navn
|
||||
fileset_none=Ingen
|
||||
fileset_onefs=Begrens backup til ett filsystem?
|
||||
fileset_sig=Fil signaturtype
|
||||
fileset_title1=Opprett filsett
|
||||
fileset_title2=Rediger filsett
|
||||
filesets_add=Legg til nytt backup filsett.
|
||||
filesets_delete=Slett valgte fil-sett
|
||||
filesets_derr=Kunne ikke slette fil-sett
|
||||
filesets_ednone=Ingen valgt
|
||||
filesets_files=Inkluderte filer
|
||||
filesets_name=Filsett navn
|
||||
filesets_none=Ingen backup filsett er definert enda.
|
||||
filesets_return=liste med filsett
|
||||
filesets_title=Filsett
|
||||
gbackup_header=Detaljer for Bacula gruppe backup jobb
|
||||
gbackup_jd=$1 (Filsett $2 på gruppe $3)
|
||||
gbackup_on=Kjører backupjobb på klient $1 :
|
||||
gbackup_run=Starter backupjobb $1 på $2 klienter ..
|
||||
gbackup_title=Kjør Bacula gruppe backup jobb
|
||||
gjob_client=Bacula gruppe som skal sikkerhetskopieres
|
||||
gjob_header=Detaljer for Bacula gruppe backup jobb
|
||||
gjob_title1=Opprett Bacula gruppe backup jobb
|
||||
gjob_title2=Rediger Bacula gruppe backup jobb
|
||||
gjobs_add=Legg til ny Bacula gruppe backup jobb
|
||||
gjobs_client=Bacula gruppe som skal sikkerhetskopieres
|
||||
gjobs_delete=Slett valgte jobber
|
||||
gjobs_derr=Kunne ikke slette Bacula gruppe backup jobber
|
||||
gjobs_none=Ingen Bacula gruppe backup jobber er definert enda.
|
||||
gjobs_return=liste med Bacula gruppe backup jobber
|
||||
gjobs_title=Bacula gruppe backup jobber
|
||||
group_eclash=En gruppe med samme navn finnes allerede
|
||||
group_egone=Gruppen finnes ikke lenger!
|
||||
group_egone2=Bacula gruppe finnes ikke lenger!
|
||||
group_err=Kunne ikke lagre Backula gruppe
|
||||
group_header=Detaljer for Bacula gruppe som skal sikkerhetskopieres
|
||||
group_members=Verter i Bacula gruppe
|
||||
group_name=Bacula gruppenavn
|
||||
group_port=Bacula FD port
|
||||
group_title1=Opprett Bacula gruppe
|
||||
group_title2=Rediger Bacula gruppe
|
||||
groups_add=Legg til Bacula gruppe:
|
||||
groups_already=Alle Bacula grupper er allerede lagt til.
|
||||
groups_catalog=Katalog
|
||||
groups_delete=Slett valgte Bacula grupper
|
||||
groups_derr=Kunne ikke slette grupper
|
||||
groups_info=$1 ($2 medlemmer)
|
||||
groups_name=Gruppenavn
|
||||
groups_noadd=Det finnes ingen Bacula grupper som kan velges for sikkerhetskopier.
|
||||
groups_none=Ingen Bacula grupper er valgt for sikkerhetskopier enda.
|
||||
groups_ok=Legg til
|
||||
groups_port=FD port
|
||||
groups_return=liste med grupper
|
||||
groups_title=Bacula grupper
|
||||
index_actions=Handlinger for sikkerhetskopiering og gjenoppretting
|
||||
index_apply=Bruk konfigurasjon
|
||||
index_applydesc=Klikk på denne knappen for å aktivere Bacula regissørkonfigurasjon vist ovenfor.
|
||||
index_boot=Start ved oppstart
|
||||
index_bootdesc=Endre denne innstillingen for å kontrollere om Bacula startes når systemet starter opp.
|
||||
index_dir=Regissørkonfigurasjon
|
||||
index_down=Nede
|
||||
index_echeck=$1 Kanskje den ikke er installert, eller så er <a href='$2'>modulkonfigurasjonen</a> feil.
|
||||
index_econsole=Bacula konsoll kommandoen $1 kunne ikke kommunisere med Bacula regissør. Forsikre deg om at passordet i $2 er korrekt.
|
||||
index_econsole2=Bacula konsoll-kommandoen $1 er ikke konfigurert med en gyldig Bacula regissør-vert. Den bruker for øyeblikket $1, og den eksisterer ikke.
|
||||
index_edb=Kunne ikke koble til Bacula databasen : $1 Kanskje den ikke er satt opp, eller så er <a href='$2'>modulekonfigurasjonen</a> feil.
|
||||
index_eng=Kunne ikle koble til Bacula grupper databasen : $1. Kanskje den ikke finnes, eller så er <a href='$2'>modulelkonfigurasjonen</a> feil.
|
||||
index_eversion=Systemet ditt bruker Bacula versjon $2, men Webmin modulen støtter bare versjon $1 eller nyere.
|
||||
index_fd=Fil daemon konfigurasjon
|
||||
index_fixaddr=Klikk her for å fikse Bacula regissør-verten
|
||||
index_fixpass=Klikk her for å fikse konsoll passordet
|
||||
index_groups=Bacula gruppe konfigurasjon
|
||||
index_notrun=Sikkerhetskopiering og andre operasjoner kan ikke utføres siden Bacula regissør daemon er nede.
|
||||
index_ocmin=Bidratt av <a href=$2 target=_new>Linmin <img align=middle border=0 src='$1'></a>
|
||||
index_restart=Omstart Bacula
|
||||
index_restartdesc=Klikk på denne knappen for og stoppe og omstarte Baculas bakgrunnsprosesser listet ovenfor. Dette kan være nødvendig for å aktivere lagringsenhet konfigurasjoner.
|
||||
index_return=modulindeks
|
||||
index_sd=Lagringsdaemon konfigurasjon
|
||||
index_start=Start Bacula
|
||||
index_startdesc=Klikk på denne knappen for å starte opp Baculas bakgrunnsprosesser listet ovenfor.
|
||||
index_status=Prosess statuser:
|
||||
index_stop=Stopp Bacula
|
||||
index_stopdesc=Klikk på denne knappen for å stoppe Baculas bakgrunnsprosesser listet ovenfor.
|
||||
index_up=Oppe
|
||||
index_versionbacula=Bacula $1
|
||||
index_versionbareos=Bareos $1
|
||||
job_after=Kommando etter jobb
|
||||
job_before=Kommando før jobb
|
||||
job_cafter=Kommando etter jobb (på klient)
|
||||
job_cbefore=Kommando før jobb (på klient)
|
||||
job_client=Klient som skal sikkerhetskopieres
|
||||
job_def=Standard type
|
||||
job_def0=Standard definisjon
|
||||
job_def1=Frittstående jobb
|
||||
job_def2=Arv standardverdier fra $1
|
||||
job_echild=Denne standard jobbdefinisjonen kan ikke slettes siden den brukes av $1
|
||||
job_eclash=En jobb med samme navn finnes allerede
|
||||
job_enabled=Sikkerhetskopi jobb aktivert?
|
||||
job_ename=Manglende eller ugyldig jobbnavn
|
||||
job_epriority=Manglende eller ugyldig prioritetsnummer
|
||||
job_err=Kunne ikke lagre backupjobb
|
||||
job_fileset=Filsett å sikkerhetskopiere
|
||||
job_header=Detaljer om backupjobb
|
||||
job_level=Sikkerhetskopi nivå
|
||||
job_messages=Mål for meldinger
|
||||
job_name=Backupjobb navn
|
||||
job_pool=Volumsamling
|
||||
job_prority=Backup prioritet
|
||||
job_run=Kjør nå
|
||||
job_schedule=Backup på tidsplan
|
||||
job_storage=Mål lagringsenhet
|
||||
job_title1=Opprett backupjobb
|
||||
job_title2=Rediger backupjobb
|
||||
job_type=Jobbtype
|
||||
jobs_add=Legg til ny backupjobb.
|
||||
jobs_client=Klient som skal sikkerhetskopieres
|
||||
jobs_deftype=Standarder?
|
||||
jobs_delete=Slett valgte jobber
|
||||
jobs_derr=Kunne ikke slette jobber
|
||||
jobs_fileset=Filsett som skal sikkerhetskopieres
|
||||
jobs_name=Jobbnavn
|
||||
jobs_none=Ingen backup jobber er definert enda.
|
||||
jobs_return=liste med jobber
|
||||
jobs_schedule=Backup tidsplan
|
||||
jobs_title=Backupjobber
|
||||
jobs_type=Jobbtype
|
||||
label_done=.. merking gjennomført.
|
||||
label_eexists=.. angitt merkelapp finnes allerede.
|
||||
label_efailed=.. merking feilet! Sjekk feilmeldingen ovenfor for mer informasjon om hvorfor.
|
||||
label_elabel=Ingen merkelapp angitt
|
||||
label_epool=.. kunne ikke finne samling!
|
||||
label_err=Merking feilet
|
||||
label_estorage=.. lagrings daemon ble ikke funnet!
|
||||
label_header=Detaljer for volum til etikett
|
||||
label_label=Nytt merkelapp-navn
|
||||
label_ok=Merk nå
|
||||
label_pool=Opprett i samling
|
||||
label_return=etikett skjema
|
||||
label_run=Merker volum med $2 på lagrings-daemon $1 ..
|
||||
label_storage=Lagrings-daemon som skal merkes
|
||||
label_title=Merk volum
|
||||
log_apply=Tok i bruk konfigurasjon
|
||||
log_backup=Startet backupjobb $1
|
||||
log_create_client=Opprettet backup klient
|
||||
log_create_device=Opprettet lagringsenhet $1
|
||||
log_create_fdirector=Opprettet fil daemon regissør $1
|
||||
log_create_fileset=Opprettet filsett $1
|
||||
log_create_gjob=Opprettet Bacula gruppe backup-jobb $1
|
||||
log_create_group=Opprettet Bacula gruppe $1
|
||||
log_create_job=Opprettet backupjobb $1
|
||||
log_create_pool=Opprettet volumsamling $1
|
||||
log_create_schedule=Opprettet backup tidsplan $1
|
||||
log_create_sdirector=Opprettet lagrings-daemon regissør $1
|
||||
log_create_storage=Opprettet lagrings daemon $1
|
||||
log_delete_client=Slettet backup klient $1
|
||||
log_delete_clients=Slettet $1 backup klienter
|
||||
log_delete_device=Slettet lagringsenhet $1
|
||||
log_delete_devices=Slettet $1 lagringsenheter
|
||||
log_delete_fdirector=Slettet fil daemon regissør $1
|
||||
log_delete_fdirectors=Slettet $1 fil daemon regissører
|
||||
log_delete_fileset=Slettet filsett $1
|
||||
log_delete_filesets=Slettet $1 filsett
|
||||
log_delete_gjob=Slettet Bacula gruppe backup jobb $1
|
||||
log_delete_gjobs=Slettet $1 Bacula gruppe backup jobber
|
||||
log_delete_group=Slettet Bacula gruppe $1
|
||||
log_delete_groups=Slettet $1 Bacula grupper
|
||||
log_delete_job=Slettet backup jobb $1
|
||||
log_delete_jobs=Slettet $1 backupjobber
|
||||
log_delete_pool=Slettet volumsamling $1
|
||||
log_delete_pools=Slettet $1 volumsamlinger
|
||||
log_delete_schedule=Slettet backup-tidsplan $1
|
||||
log_delete_schedules=Slettet $1 backup tidsplaner
|
||||
log_delete_sdirector=Slettet lagrings daemon regissør $1
|
||||
log_delete_sdirectors=Slettet $1 lagrings daemon regissører
|
||||
log_delete_storage=Slettet lagrings daemon $1
|
||||
log_delete_storages=Slettet $1 lagrings daemoner
|
||||
log_director=Lagret global Bacula regissørkonfigurasjon
|
||||
log_file=Lagret Bacula fil daemon konfigurasjon
|
||||
log_fixpass=Fikset Bacula konsoll-program passord
|
||||
log_gbackup=Startet Bacula gruppe backup jobb $1
|
||||
log_label=Merket lagrings-daemon $1
|
||||
log_modify_client=Endret backup klient $1
|
||||
log_modify_device=Endret lagringsenhet $1
|
||||
log_modify_fdirector=Endret fil daemon regissør $1
|
||||
log_modify_fileset=Endret filsett $1
|
||||
log_modify_gjob=Endret Bacula gruppe backup jobb $1
|
||||
log_modify_group=Endret Bacula gruppe $1
|
||||
log_modify_job=Endret backup jobb $1
|
||||
log_modify_pool=Endret volumsamling $1
|
||||
log_modify_schedule=Endret backup-tidsplan $1
|
||||
log_modify_sdirector=Endret lagrings-daemon regissør $1
|
||||
log_modify_storage=Endret lagrings daemon $1
|
||||
log_mount=Montert lagringsenhet $1
|
||||
log_restart=Omstartet Bacula daemoner
|
||||
log_start=Startet Bacula daemoner
|
||||
log_stop=Stoppet Bacula daemoner
|
||||
log_storagec=Lagret Bacula lagrings daemon konfigurasjon
|
||||
log_sync=Lagret Bacula gruppesynkronisering
|
||||
log_unmount=Avmonterte lagringsenhet $1
|
||||
mount_done=.. montert ok.
|
||||
mount_err=Kunne ikke montere lagringsenhet
|
||||
mount_eslot=Manglende eller ugyldig slot-nummer
|
||||
mount_failed=.. montering feilet! Sjekk feilmeldingen ovenfor for evt. årsaker til dette.
|
||||
mount_header=Innstillinger for montering eller demontering av lagring
|
||||
mount_mount=Monter lagring
|
||||
mount_noslot=Ingen
|
||||
mount_return=monteringsskjema
|
||||
mount_run=Monterer volum på lagringsenhet $1 ..
|
||||
mount_slot=Auto-loader slot
|
||||
mount_slotno=Slot nummer
|
||||
mount_storage=Lagringsenhet
|
||||
mount_title=Monter eller avmonter
|
||||
mount_unmount=Avmonter lagring
|
||||
pool_any=Backup til et hvilket som helst volum i samling?
|
||||
pool_auto=Tøm utløpte volumer?
|
||||
pool_autolabel=Prefiks for automatisk volum-merking
|
||||
pool_echild=Denne klienten kan ikke slettes siden den brukes av $1
|
||||
pool_eclash=En lagringsenhet med samme navn finnes allerede
|
||||
pool_egone=Volumsamling finnes ikke lenger
|
||||
pool_emax=Manglende eller ugyldig antall jobber per volum
|
||||
pool_ename=Manglende navn på lagringsenhet
|
||||
pool_ereten=Manglende eller ugyldig oppbevaringsperiode
|
||||
pool_err=Kunne ikke lagre lagringsenhet
|
||||
pool_header=Detaljer for backup volumsamling
|
||||
pool_max=Maksimum jobber per volum
|
||||
pool_maxvolsize=Maks. volumstørrelse (f.eks 5G for 5 Gigabytes)
|
||||
pool_name=Volumsamling navn
|
||||
pool_recycle=Resirkuler volumer automatisk?
|
||||
pool_reten=Volum oppbevaringsperiode
|
||||
pool_status=Vis volumer
|
||||
pool_title1=Opprett volumsamling
|
||||
pool_title2=Rediger volumsamling
|
||||
pool_type=Volumsamling type
|
||||
pool_unlimited=Ubegrenset
|
||||
pools_add=Legg til ny volumsamling.
|
||||
pools_delete=Slett valgte volumsamlinger
|
||||
pools_derr=Kunne ikke slette volumsamlinger
|
||||
pools_name=Samling navn
|
||||
pools_none=Ingen volumsamlinger er definert enda.
|
||||
pools_reten=Oppbevaringsperiode
|
||||
pools_return=liste over volumsamlinger
|
||||
pools_title=Volumsamlinger
|
||||
pools_type=Samling-type
|
||||
poolstatus_bytes=Bytes skrevet
|
||||
poolstatus_delete=Slett valgte volumer
|
||||
poolstatus_first=Først brukt
|
||||
poolstatus_last=Sist brukt
|
||||
poolstatus_name=Volumnavn
|
||||
poolstatus_never=Aldri
|
||||
poolstatus_none=Det er for øyeblikket ingen volumer i denne backup-samlingen.
|
||||
poolstatus_ok=OK
|
||||
poolstatus_show=Vis volumer i samling:
|
||||
poolstatus_status=Backup modus
|
||||
poolstatus_title=Volumer i samling
|
||||
poolstatus_type=Mediatype
|
||||
poolstatus_volumes=Volumer i valgt samling.
|
||||
proc_bacula-dir=Bacula regissør daemon
|
||||
proc_bacula-fd=Fil daemon
|
||||
proc_bacula-sd=Lagrings daemon
|
||||
proc_bareos-dir=Backula regissør daemon
|
||||
proc_bareos-fd=Fil daemon
|
||||
proc_bareos-sd=Lagrings daemon
|
||||
restart_err=Kunne ikke omstarte Bacula
|
||||
restore_all=--Alle klienter i gruppe--
|
||||
restore_client=Gjenopprett til klient eller gruppe
|
||||
restore_clist=--Klienter--
|
||||
restore_done=.. gjenoppretting fullført.
|
||||
restore_eall1=Du må velge <b>Alle klienter i backup</b> for <b>Gjenopprett til klient eller gruppe</b> når du utfører en Bacula gruppejobb gjenoppretting
|
||||
restore_eall2=<b>Alle klienter i backup</b> kan bare velges for <b>Gjenopprett til klient eller gruppe</b> når du utfører en Bacula gruppejobb gjenoppretting
|
||||
restore_eclient=Ingen klient eller Bacula gruppe valgt
|
||||
restore_eclients=Fant ingen medlemmer av Bacula gruppe backup!
|
||||
restore_efiles=Ingen filer angitt
|
||||
restore_egroup=Bacula gruppe finnes ikke
|
||||
restore_ejob=Ugyldig jobb ID
|
||||
restore_ejobfiles=Ingen filer loggført for jobb
|
||||
restore_enofiles=Ingen av de valgte filene finnes i backup
|
||||
restore_eok=.. jobb kunne ikke startes
|
||||
restore_err=Kunne ikke gjenopprette sikkerhetskopi
|
||||
restore_ewhere=Manglende katalog å gjenopprette til
|
||||
restore_failed=.. gjenoppretting ble ikke fullført ordentlig. Sjekk feilmeldingen ovenfor for ytterligere detaljer.
|
||||
restore_files=Filer som skal gjenopprettes
|
||||
restore_glist=--Bacula grupper--
|
||||
restore_header=Innstillinger for gjenoppretting av tidligere backup jobber
|
||||
restore_jlist=--Enkle systemjobber--
|
||||
restore_job=Jobb som skan gjenopprettes
|
||||
restore_level_D=Differensiell
|
||||
restore_level_F=Full
|
||||
restore_level_I=Inkrementell
|
||||
restore_njlist=--Bacula gruppejobber--
|
||||
restore_ok=Gjenopprett nå
|
||||
restore_return=gjennopprettingsskjema
|
||||
restore_run=Starter gjenoppretting av jobb $1 til klient $2 fra lagring $3 ..
|
||||
restore_running=.. gjenopprettingen kjører nå. Når den er fullført vil resultatene vises nedenfor ..
|
||||
restore_running2=.. gjenopprettingen er startet i bakgrunnen.
|
||||
restore_storage=Gjenopprett fra lagringsenhet
|
||||
restore_title=Gjenopprett sikkerhetskopi
|
||||
restore_title2=Gjenopprett backup til Bacula gruppe
|
||||
restore_title3=Gjenopprett Bacula gruppe backup
|
||||
restore_where=Gjenopprett til katalog
|
||||
restore_where2=Annen rot-katalog
|
||||
schedule_echild=Denne tidsplanen kan ikke slettes siden den brukes av $1
|
||||
schedule_eclash=En tidsplan med samme navn finnes allerede
|
||||
schedule_ename=Manglende eller ugyldig tidsplan-navn
|
||||
schedule_err=Kunne ikke lagre backup-tidsplan
|
||||
schedule_etimes=Manglende backup-tidspunkt i rad $1
|
||||
schedule_header=Detaljer for backup-tidsplan
|
||||
schedule_level=Backup nivå
|
||||
schedule_name=Backup-tidsplan navn
|
||||
schedule_pool=Volum
|
||||
schedule_runs=Kjørenivå og tidspunkt
|
||||
schedule_times=Kjørt på tidspunkt
|
||||
schedule_title1=Opprett tidsplan for backup
|
||||
schedule_title2=Rediger tidsplan for backup
|
||||
schedules_add=Legg til ny tidsplan for backup.
|
||||
schedules_delete=Slett valgte tidsplaner
|
||||
schedules_derr=Kunne ikke slette tidsplaner
|
||||
schedules_name=Tidsplan navn
|
||||
schedules_none=Ingen tidsplaner for backup er definert enda.
|
||||
schedules_return=liste over tidsplaner
|
||||
schedules_sched=Kjørenivå og tidspunkt
|
||||
schedules_title=Tidsplaner for backup
|
||||
sdirector_eclash=En regissør med samme navn finnes allerede
|
||||
sdirector_egone=Regissør finnes ikke lenger!
|
||||
sdirector_ename=Mangler regissør navn
|
||||
sdirector_epass=Manglende passord
|
||||
sdirector_err=Kunne ikke lagre lagrings-daemon regissør
|
||||
sdirector_header=Detaljer for kontrollerende ekstern regissør
|
||||
sdirector_monitor=Tillat bare overvåkings-tilkobling?
|
||||
sdirector_name=Regissør navn
|
||||
sdirector_pass=Akseptert passord
|
||||
sdirector_title1=Opprett lagrings-daemon regissør
|
||||
sdirector_title2=Rediger Lagrings-daemon regissør
|
||||
sdirectors_add=Legg til ny regissør.
|
||||
sdirectors_delete=Slett valgte regissører
|
||||
sdirectors_derr=Kunne ikke slette regissører
|
||||
sdirectors_name=Regissør navn
|
||||
sdirectors_none=Ingen regissører er definert enda.
|
||||
sdirectors_pass=Akseptert passord
|
||||
sdirectors_return=liste over regissører
|
||||
sdirectors_title=Lagrings daemon regissører
|
||||
start_einit=Fant ikke noe init script for $1
|
||||
start_err=Kunne ikke starte Bacula
|
||||
start_erun=Kunne ikke starte $1 : $2
|
||||
stop_err=Kunne ikke stoppe Bacula
|
||||
storage_address=Vertsnavn eller IP adresse
|
||||
storage_device=Lagringsenhet navn
|
||||
storage_eaddress=Manglende eller ugyldig vertsnavn eller adresse
|
||||
storage_echild=Denne klienten kan ikke slette siden den brukes av $1
|
||||
storage_eclash=En lagrings-daemon med samme navn finnes allerede
|
||||
storage_edevice=Mangler lagringsenhet navn
|
||||
storage_egone=Lagrings-daemon finnes ikke lenger!
|
||||
storage_emaxjobs=Mangler maks samtidige jobber
|
||||
storage_emedia=Mangler mediatype navn
|
||||
storage_ename=Mangler lagrings-daemon navn
|
||||
storage_epass=Mangler passord
|
||||
storage_eport=Manglende eller ugyldig SD port
|
||||
storage_err=Kunne ikke lagre lagrings-daemon
|
||||
storage_header=Detaljer for ekstern lagrings-daemon
|
||||
storage_maxjobs=Maks. samtidige jobber
|
||||
storage_media=Mediatype navn
|
||||
storage_name=Lagringsdaemon navn
|
||||
storage_other=Annen..
|
||||
storage_pass=Bacula SD passord
|
||||
storage_port=Bacula SD port
|
||||
storage_status=Vis status
|
||||
storage_title1=Opprett lagringsdaemon
|
||||
storage_title2=Rediger lagringsdaemon
|
||||
storagec_dir=Bacula arbeidskatalog
|
||||
storagec_edir=Manglende eller ikke-eksisterende arbeidskatalog
|
||||
storagec_ejobs=Manglende eller ugyldig antall samtidige jobber
|
||||
storagec_ename=Manglende eller ugyldig lagrinsgs-daemon navn
|
||||
storagec_enone=Ingen lagringsdaemon-konfigurasjon funnet!
|
||||
storagec_eport=Manglende eller ugyldig portnummer
|
||||
storagec_err=Kunne ikke lagre lagrings-daemon konfigurasjon
|
||||
storagec_header=Innstillinger for Bacula lagringsdaemon
|
||||
storagec_jobs=Maks. antall samtidige jobber
|
||||
storagec_name=Daemon navn
|
||||
storagec_port=Lytt på port
|
||||
storagec_title=Lagrings-daemon konfigurasjon
|
||||
storages_add=Legg til ny lagrings daemon.
|
||||
storages_address=Vertsnavn eller adresse
|
||||
storages_delete=Slett valgte lagringsdaemoner
|
||||
storages_derr=Kunne ikke slette lagrings-daemoner
|
||||
storages_device=Lagringsenhet
|
||||
storages_name=Lager navn
|
||||
storages_none=Ingen lagrings-daemoner er definert enda.
|
||||
storages_return=liste med lagrings-daemoner
|
||||
storages_title=Lagrings-daemoner
|
||||
storages_type=Media type
|
||||
storagestatus_err=Kunne ikke hente status fra $1 : $2
|
||||
storagestatus_msg=Status fra $1 : $2
|
||||
storagestatus_ok=OK
|
||||
storagestatus_show=Vis status for lagrings-daemon
|
||||
storagestatus_title=Lagrings-daemon status
|
||||
sync_err=Kunne ikke lagre Bacula gruppe synkronisering
|
||||
sync_header=Innstillinger for automatisk synkronisering av Bacula gruppe klient
|
||||
sync_sched=Synkroniser ihht. tidsplan?
|
||||
sync_schedyes=Ja, på tidspunklt valgt nedenfor ..
|
||||
sync_title=Bacula gruppe-synkronisering
|
||||
tls_cacert=TLS PEM sertifikatautoritet fil
|
||||
tls_cert=TLS PEM sertifikatfil
|
||||
tls_ecacert=Manglende eller ikke-eksisterende TLS CA sertifikat-fil
|
||||
tls_ecert=Manglende eller ikke-eksisterende TLS sertifikat fil
|
||||
tls_ecerts=For at TLS skal kunne aktiveres må du angi sertifikat-, nøkkel- og CA-filer
|
||||
tls_ekey=Manglende eller ikke-eksisterende TLS nøkkel-fil
|
||||
tls_enable=Aktiver TLS kryptering?
|
||||
tls_key=TLS PEM nøkkelfil
|
||||
tls_none=Ingen
|
||||
tls_require=Godta bare TLS tilkoblinger?
|
||||
tls_verify=Verifiser TLS klienter?
|
||||
unmount_done=.. av-montert!
|
||||
unmount_failed=.. av-montering feilet! Sjekk feilmeldingen ovenfor for mer informasjon.
|
||||
unmount_run=Avmonterer volum på lagringsenhet $1 ..
|
||||
weekdaynum_1=Første
|
||||
weekdaynum_2=Andre
|
||||
weekdaynum_3=Tredje
|
||||
weekdaynum_4=Fjerde
|
||||
weekdaynum_5=Femte
|
||||
@@ -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,11 @@ 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.
|
||||
desc_no=Bacula backupsystem
|
||||
|
||||
@@ -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'});
|
||||
}
|
||||
|
||||
@@ -18,3 +18,4 @@ desc_hu.UTF-8=Forgalmi monitor
|
||||
desc_no=Overvåking av båndbredde
|
||||
longdesc_ms_MY=Lihat laporan mengenai penggunaan jalur lebar oleh host, port, protokol dan masa pada sistem Linux.
|
||||
desc_ms_MY=Pemantauan jalur lebar
|
||||
longdesc_pl=Raporty na temat wykorzystania transferu przez host, port, protokó³ w okre¶lonym czasie.
|
||||
|
||||
@@ -144,3 +144,5 @@ Slave zone files in raw format can now be displayed by Webmin.
|
||||
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.
|
||||
|
||||
@@ -224,7 +224,7 @@ elsif ($in{'zones_def'} == 2) {
|
||||
else {
|
||||
$_[0]->{'zones'} = join(" ", split(/\0/, $in{'zones'}));
|
||||
}
|
||||
$_[0]->{'inviews'} = $in{'inviews_def'} ? "*" :
|
||||
$_[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;
|
||||
|
||||
@@ -11,6 +11,7 @@ if ($have_dnssec_tools) {
|
||||
use Net::DNS::SEC::Tools::rollmgr;
|
||||
use Net::DNS::SEC::Tools::rollrec;
|
||||
use Net::DNS::SEC::Tools::keyrec;
|
||||
use Net::DNS::RR::DS;
|
||||
use Net::DNS;";
|
||||
}
|
||||
|
||||
@@ -767,8 +768,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 +786,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 +846,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
|
||||
@@ -880,7 +899,7 @@ else {
|
||||
# List of allowed zones
|
||||
local $ok;
|
||||
foreach my $z (split(/\s+/, $access{'zones'})) {
|
||||
$ok++ if ($z eq $zn || ($vn && $z eq $vn));
|
||||
$ok++ if ($z eq $zn || ($vn && $z eq "view_".$vn));
|
||||
}
|
||||
return 0 if (!$ok);
|
||||
}
|
||||
@@ -1356,7 +1375,7 @@ if ($v =~ /^([^.]+)\@(.*)$/) {
|
||||
elsif ($v =~ /^(.*)\@(.*)$/) {
|
||||
local ($u, $d) = ($1, $2);
|
||||
$u =~ s/\./\\\./g;
|
||||
return "\"$u.$d.\"";
|
||||
return "$u.$d.";
|
||||
}
|
||||
else {
|
||||
return $v;
|
||||
@@ -2518,11 +2537,14 @@ if ($add_slaves) {
|
||||
if ($add_tmpl) {
|
||||
# Create template records
|
||||
local %bumped;
|
||||
local %hash = ( 'ip' => $ip,
|
||||
'dom' => $zone );
|
||||
for(my $i=0; $config{"tmpl_$i"}; $i++) {
|
||||
local @c = split(/\s+/, $config{"tmpl_$i"}, 3);
|
||||
local $name = $c[0] eq '.' ? "$zone." : $c[0];
|
||||
local $fullname = $name =~ /\.$/ ? $name : "$name.$zone.";
|
||||
local $recip = $c[2] || $ip;
|
||||
$recip = &substitute_template($recip, \%hash);
|
||||
&create_record($file, $name, undef, "IN", $c[1], $recip);
|
||||
if ($addrev && ($c[1] eq "A" || $c[1] eq "AAAA")) {
|
||||
# Consider adding reverse record
|
||||
@@ -2550,8 +2572,6 @@ if ($add_tmpl) {
|
||||
if ($config{'tmpl_include'}) {
|
||||
# Add whatever is in the template file
|
||||
local $tmpl = &read_file_contents($config{'tmpl_include'});
|
||||
local %hash = ( 'ip' => $ip,
|
||||
'dom' => $zone );
|
||||
$tmpl = &substitute_template($tmpl, \%hash);
|
||||
&open_tempfile(FILE, ">>".&make_chroot($file));
|
||||
&print_tempfile(FILE, $tmpl);
|
||||
@@ -2615,12 +2635,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;
|
||||
@@ -2646,6 +2667,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;
|
||||
@@ -3966,19 +3990,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)))." ".quotemeta($dom)." 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;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user