mirror of
https://github.com/webmin/webmin.git
synced 2026-02-04 14:42:15 +00:00
Compare commits
96 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a0f3c0f73 | ||
|
|
e89ffcfa69 | ||
|
|
c98d49b198 | ||
|
|
eaf74d1385 | ||
|
|
57cfc150dd | ||
|
|
ab0c84eed5 | ||
|
|
d3d1cc1737 | ||
|
|
2a0fe13317 | ||
|
|
1e2545b06e | ||
|
|
3ef0e979d6 | ||
|
|
1feaa18d99 | ||
|
|
882c8152e5 | ||
|
|
6230f9e9fc | ||
|
|
55cfbd140c | ||
|
|
47a1013472 | ||
|
|
1eecef7ab9 | ||
|
|
771a4a413c | ||
|
|
cdac858567 | ||
|
|
332d71dcd6 | ||
|
|
df8a43fb4b | ||
|
|
8cf71f5b3a | ||
|
|
0da2af51c6 | ||
|
|
f0a190276c | ||
|
|
e581097113 | ||
|
|
c6dedff679 | ||
|
|
8b4b053222 | ||
|
|
9635f6a744 | ||
|
|
fd265242d1 | ||
|
|
8d874344a1 | ||
|
|
cbe670e664 | ||
|
|
090ed9f1d8 | ||
|
|
b1349bfc27 | ||
|
|
1b1579ad1b | ||
|
|
9d54424523 | ||
|
|
aac36ae5fc | ||
|
|
6aca4b6fd3 | ||
|
|
031aded040 | ||
|
|
3f73bd8f1c | ||
|
|
ef4213df55 | ||
|
|
e0c2b84913 | ||
|
|
b79d78a9ba | ||
|
|
bf3e179429 | ||
|
|
3efa74f29a | ||
|
|
ffc08b399a | ||
|
|
7b958daef9 | ||
|
|
9dc50476ba | ||
|
|
0df56f2896 | ||
|
|
9a4d7c400a | ||
|
|
382d8d1033 | ||
|
|
017972b8e7 | ||
|
|
49e5e7ef43 | ||
|
|
4655b89dd2 | ||
|
|
cf86d9794f | ||
|
|
6ed15902f1 | ||
|
|
c8bc89976d | ||
|
|
a2d31aa7a4 | ||
|
|
7b4be20934 | ||
|
|
a7cc1f1d90 | ||
|
|
0cb86127e8 | ||
|
|
f293c3199e | ||
|
|
d52b4a440f | ||
|
|
cd9c15b996 | ||
|
|
85803b5778 | ||
|
|
5414422319 | ||
|
|
8e11dfccfb | ||
|
|
13939b4475 | ||
|
|
7249e646e8 | ||
|
|
e2a2334611 | ||
|
|
f71a66e60b | ||
|
|
a60ffc8372 | ||
|
|
e0ae7426cf | ||
|
|
de24b412d0 | ||
|
|
909cb57bf2 | ||
|
|
76de50edf5 | ||
|
|
8f851e5cc6 | ||
|
|
accbcfd4d4 | ||
|
|
2ab5ff1b7e | ||
|
|
81f9d1239b | ||
|
|
017fdeb690 | ||
|
|
d109e256c8 | ||
|
|
c3275fd05a | ||
|
|
aaeab928b0 | ||
|
|
7dc35af03b | ||
|
|
0f3521b995 | ||
|
|
64e797ea2e | ||
|
|
9a57de5d1c | ||
|
|
828fd37c82 | ||
|
|
a88a9de113 | ||
|
|
90b759e644 | ||
|
|
5b8a3fb3bf | ||
|
|
5794174f05 | ||
|
|
baabbfd4ab | ||
|
|
4565a3ff4d | ||
|
|
805ae75c20 | ||
|
|
794dab045a | ||
|
|
f6c2f11dc3 |
37
CHANGELOG.md
Normal file
37
CHANGELOG.md
Normal file
@@ -0,0 +1,37 @@
|
||||
## Changelog
|
||||
|
||||
#### Version 1.920 (July 04, 2019)
|
||||
This update includes the latest theme version, translation updates, the ability to disable hosts file entries, easier monitoring of bootup actions, and a bunch of bugfixes.
|
||||
|
||||
#### Version 1.910 (May 09, 2019)
|
||||
This release includes theme and translation updates, a page for editing package repositories, cron and status module improvements, and a bunch of other bugfixes and small improvements.
|
||||
|
||||
#### Version 1.900 (November 19, 2018)
|
||||
This version includes wildcard Let's Encrypt SSL cert support, theme and translation updates, support for announcements to Webmin users, and a bunch of other bugfixes and small improvements.
|
||||
|
||||
#### Version 1.890 (July 19, 2018)
|
||||
This version includes Ubuntu 18 network config support, translation updates, multiple theme and file manager updates, BIND freeze/thaw support, support for more Linux distributuions, and a bunch of other bugfixes and small improvements.
|
||||
|
||||
#### Version 1.880 (March 16, 2018)
|
||||
This version includes German, Catalan and Bulgarian translation updates, a new version of the Authentic Theme, support for directly editing the MySQL and PostgreSQL config files, Let's Encrypt bugfixes, more control over system status email notifications, and more.
|
||||
|
||||
#### Version 1.870 (December 08, 2018)
|
||||
This release includes many translation updates, fixes for Let's Encrypt support, UI cleanups, and most importantly a new major version of the Authentic Theme.
|
||||
|
||||
#### Version 1.860 (October 10, 2017)
|
||||
This release includes Let's Encrypt DNS fixes, Majordomo module improvements, XSS security bugfixes, translation updates, a new version of the theme, and more.
|
||||
|
||||
#### Version 1.850 (June 28, 2017)
|
||||
This release includes Let's Encrypt fixes, Majordomo module improvements, FirewallD forwarding support, translation updates, an update to the Authentic theme, and a bunch of other bugfixes.
|
||||
|
||||
#### Version 1.840 (May 08, 2017)
|
||||
This major release includes a large theme update, XSS security fixes, per-domain SSL cert support, thin-provisioned LVM support, Let's Encrypt improvements, translation updates, and the usual gang of bugfixes. Also available is Usermin 1.710, which contains many of the same updates.
|
||||
|
||||
#### Version 1.830 (December 29, 2016)
|
||||
This is mainly a bugfix release, but also contains some translation updates, the latest version of the Authentic Theme, fixes related to Let's Encrypt and LDAP client support, and SElinux and file attribute support in the file manager.
|
||||
|
||||
#### Version 1.820 (October 3, 2016)
|
||||
This updated includes a bunch of bugfixes (particularly in the BIND module), translation updates, the ability to download a MySQL backup, Let's Encrypt improvements, and more.
|
||||
|
||||
#### Version 1.810 (August 8, 2016)
|
||||
This updated includes the latest Authentic Theme, a new IPv6 Firewall module for Linux, Webmin actions logging improvements, Let's Encrypt API fixes and a bunch of other small updates and bugfixes.
|
||||
53
LICENCE
53
LICENCE
@@ -1,29 +1,30 @@
|
||||
---------------------------------------------------------
|
||||
Copyright (c) Jamie Cameron
|
||||
All rights reserved.
|
||||
BSD 3-Clause License
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the developer nor the names of contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
Copyright (c) Jamie Cameron
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE DEVELOPER ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE DEVELOPER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
---------------------------------------------------------
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
56
README
56
README
@@ -1,56 +0,0 @@
|
||||
Webmin Version 1.910
|
||||
--------------------
|
||||
Webmin is a web-based interface for system administration for Unix.
|
||||
Using any browser that supports tables and forms, you can setup user
|
||||
accounts, Apache, internet services, DNS, file sharing and so on.
|
||||
|
||||
Webmin consists of a simple web server, and a number of CGI programs
|
||||
which directly update system files like /etc/inetd.conf and /etc/passwd.
|
||||
The web server and all CGI programs are written in Perl version 5, and use
|
||||
only the standard perl modules.
|
||||
|
||||
Webmin can be installed in two different ways :
|
||||
|
||||
1) By just running the setup.sh script in the same directory as this README
|
||||
file, with no arguments. You will be asked a series of questions such as
|
||||
the configuration directory, your chosen login name and password, and
|
||||
possibly your operating system. For questions where a default is shown
|
||||
in square brackets, you can just hit enter to accept the default (which
|
||||
is usually correct).
|
||||
|
||||
If the configuration directory you enter is the same as that used by
|
||||
a previous install of Webmin, it will be automatically upgraded with all
|
||||
configurable settings preserved.
|
||||
|
||||
This will set up Webmin to run directly from this directory. After running
|
||||
setup.sh, do not delete the directory as it contains all the scripts and
|
||||
programs that will be used by Webmin when it is running. Unlike in the second
|
||||
installation method, the Webmin scripts do not get copied to another
|
||||
location when installing.
|
||||
|
||||
2) By running the setup.sh script in this directory, but with a command-line
|
||||
argument such as /usr/local/webmin . When a directory like this is provided,
|
||||
Webmin's scripts will be copied to the chosen directory and it will be
|
||||
configured to run from that location.
|
||||
|
||||
The exact same questions will be asked by setup.sh when it is run with
|
||||
a directory argument, and upgrading will work in the same way. If you
|
||||
are upgrading an old install, you should enter the same directory argument
|
||||
so that the new files overwrite the old in order to save disk space.
|
||||
|
||||
After Webmin has been installed to a specific directory using this method,
|
||||
the directory extracted from the tar.gz file can be safely deleted.
|
||||
|
||||
If you are installing Webmin on a Windows system, you must run the command
|
||||
perl setup.pl instead, as shell scripts will not typically run on a Windows
|
||||
system. The Windows version depends on several programs and modules that may
|
||||
not be part of the standard distribution. You will need the process.exe
|
||||
commmand, the sc.exe command and the Win32::Daemon Perl module.
|
||||
|
||||
For more information, see http://www.webmin.com/
|
||||
|
||||
For documentation, see http://doxfer.webmin.com/
|
||||
|
||||
Jamie Cameron
|
||||
jcameron@webmin.com
|
||||
|
||||
53
README.md
Normal file
53
README.md
Normal file
@@ -0,0 +1,53 @@
|
||||
## Contents
|
||||
* [Changelog](https://github.com/webmin/webmin/blob/master/CHANGELOG.md)
|
||||
* [About](#about)
|
||||
* [Installation](#installation)[<img src="https://github.com/webmin-devel/webmin/blob/master/media/download-23x14-stable.png?raw=true" title="Stable Versions">](http://webmin.com/download.html)[<img src="https://github.com/webmin-devel/webmin/blob/master/media/download-23x14-devel.png?raw=true" title="Development Versions">](http://webmin.com/devel.html)
|
||||
* [Documentation](#documentation)
|
||||
* [Development](#development)
|
||||
* [License](#license)
|
||||
|
||||
## About
|
||||
|
||||
**Webmin** is a web-based system administration tool for Unix-like servers, and services with over _1,000,000_ installations worldwide. Using it, it is possible to configure operating system internals, such as users, disk quotas, services or configuration files, as well as modify, and control open-source apps, such as BIND DNS Server, Apache HTTP Server, PHP, MySQL, and [many more](https://doxfer.webmin.com/Webmin/Introduction).
|
||||
|
||||

|
||||
|
||||
Usability can be expanded by installing modules, which can be custom made. Aside from this, there are two other major projects that extend its functionality:
|
||||
|
||||
* [Virtualmin](https://www.virtualmin.com) is a powerful, flexible, most popular, and most comprehensive web-hosting control panel for Linux, and BSD systems, with over _100,000_ installations worldwide. It is available in an open-source community-supported version, and a more feature-filled version with premium support;
|
||||
* [Usermin](https://github.com/webmin/usermin) presents and controls a subset of user-centred features, rather than administrator-level tasks.
|
||||
|
||||
Webmin includes _116_ [standard modules](https://doxfer.webmin.com/Webmin/Webmin_Modules), and there are at least as many third-party modules.
|
||||
|
||||
|
||||
### Requirements
|
||||
Perl 5.10 or higher.
|
||||
|
||||
## Installation
|
||||
Webmin can be installed in two different ways:
|
||||
|
||||
1. By downloading a pre-built package, available for different distributions (CentOS, Fedora, SuSE, Mandriva, Debian, Ubuntu, Solaris and [other](http://www.webmin.com/support.html)) from our [download page](http://webmin.com/download.html);
|
||||
<kbd>Note: It is highly recommended to [add repository](https://doxfer.webmin.com/Webmin/Installation) to your system for having automatic updates.</kbd>
|
||||
|
||||
2. By downloading, extracting [source file](https://prdownloads.sourceforge.net/webadmin/webmin-1.930.tar.gz), and running [_setup.sh_](http://www.webmin.com/tgz.html) script, with no arguments, which will setup to run it directly from this directory, or with a command-line argument, such as targeted directory.
|
||||
<kbd>Note: If you are installing Webmin [on Windows](http://www.webmin.com/windows.html) system, you must run the command `perl setup.pl` instead. The Windows version depends on several programs, and modules that may not be part of the standard distribution. You will need _process.exe_ commmand, _sc.exe_ command, and _Win32::Daemon_ Perl module.</kbd>
|
||||
|
||||
## Documentation
|
||||
Complete set of documentation for Webmin and all of its modules can be found at out [Wiki page](https://doxfer.webmin.com/Webmin/Main_Page).
|
||||
|
||||
## Development
|
||||
|
||||
### Lead developer
|
||||
|
||||
* [Jamie Cameron](http://www.webmin.com/about.html) [](https://www.linkedin.com/in/jamiecameron2)
|
||||
|
||||
### Contributors
|
||||
|
||||
* [Joe Cooper](https://github.com/swelljoe)
|
||||
* [Ilia Rostovtsev](https://github.com/rostovtsev)
|
||||
* [Kay Marquardt](https://github.com/gnadelwartz)
|
||||
* [Nawawi Jamili](https://github.com/nawawi) + [57 more..](https://github.com/webmin/webmin/graphs/contributors)
|
||||
|
||||
## License
|
||||
|
||||
Webmin is released under the [BSD License](https://github.com/webmin/webmin/blob/master/LICENCE).
|
||||
@@ -18,7 +18,7 @@ if ($in{'virt'} && $access{'types'} eq '*') {
|
||||
"name" => $text{'virt_edit'},
|
||||
"link" => "manual_form.cgi?virt=$in{'virt'}" };
|
||||
}
|
||||
if ($v->{'value'} =~ /:80/ && $v->{'value'} !~ /:443/) {
|
||||
if ($v->{'value'} =~ /:80$/ || $v->{'value'} !~ /:/) {
|
||||
# Hide SSL icon for non-SSL sites
|
||||
$access_types{14} = 0;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ index_efiresys=Keine der unterstützen Firewalls (IPtables, IPFW, IPFilter o
|
||||
index_efiresys2=Das konfigurierte Firewall-System $1 wurde auf Ihrem System nicht gefunden. Überprüfen Sie die <a href='$2'>Modulkonfiguration</a> um die richtige Firewall einzustellen.
|
||||
index_efrom=Ungültige(s) Startdatum und -zeit
|
||||
index_ehost=Fehlender oder ungültiger Host
|
||||
index_ehour=Ungültige Zeitangabe - Format JJJJ-MM-DD SS:MM
|
||||
index_ehour=Ungültige Zeitangabe - Format JJJJ-MM-TT SS:MM
|
||||
index_eiptables=Warnung - Ihre IPtables-Konfiguration hat einen Fehler : $1. Das Einrichten der Überwachung wird alle vorhandenen Regeln löschen!
|
||||
index_elog=Die Datei $1 wird für die Bandbreitenmessung benutzt und loggt derzeit Daten auf Ihrem Dateisystem. Benutzen Sie die <a href='$2'>Modulkonfiguration</a> um einen anderen Pfad einzustellen.
|
||||
index_emod=Das Webminmodul $1 ist nicht installiert oder wird auf diesem System nicht unterstützt. Ohne jenes Modul kann dieses Modul nicht arbeiten.
|
||||
|
||||
@@ -38,7 +38,8 @@ if (@keyrecs) {
|
||||
my ($keyrec) = grep { $_->{'values'}->[0] ==
|
||||
($key->{'ksk'} ? 257 : 256) } @keyrecs;
|
||||
my $keyline = join(" ", $keyrec->{'name'}, $keyrec->{'class'},
|
||||
$keyrec->{'type'}, @{$keyrec->{'values'}});
|
||||
$keyrec->{'type'},
|
||||
join("", @{$keyrec->{'values'}}));
|
||||
print &ui_hidden_start($text{'zonekey_expand'.$kt},
|
||||
$kt, 0, "edit_zonekey.cgi?$in");
|
||||
print $text{'zonekey_public'},"<br>\n";
|
||||
|
||||
@@ -316,7 +316,7 @@ elsif (@zones && (!@views || !$config{'by_view'})) {
|
||||
@{$ztree{$par}} = &unique(@{$ztree{$par}}, $ch);
|
||||
}
|
||||
}
|
||||
print "<table>\n";
|
||||
print "<table data-recursive_tree>\n";
|
||||
&recursive_tree("");
|
||||
print "</table>\n";
|
||||
}
|
||||
|
||||
@@ -863,7 +863,7 @@ else {
|
||||
# All one one line
|
||||
my @rv;
|
||||
foreach my $v (@{$r->{'values'}}) {
|
||||
push(@rv, $v =~ /\s/ ? "\"$v\"" : $v);
|
||||
push(@rv, $v =~ /\s|;/ ? "\"$v\"" : $v);
|
||||
}
|
||||
return join(" ", @rv);
|
||||
}
|
||||
|
||||
@@ -67,7 +67,9 @@ foreach my $z (@zones) {
|
||||
print STDERR " Age in days $old\n" if ($debug);
|
||||
if ($old > $period) {
|
||||
# Too old .. signing
|
||||
before_editing($z);
|
||||
my $err = &resign_dnssec_key($z);
|
||||
after_editing($z);
|
||||
if ($err) {
|
||||
print STDERR " Re-signing of $z->{'name'} failed : $err\n";
|
||||
$errcount++;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#!/usr/local/bin/perl
|
||||
# save_gen.cgi
|
||||
# Save $generate records
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
our (%access, %text, %in);
|
||||
@@ -17,7 +18,7 @@ my $dom = $zone->{'name'};
|
||||
|
||||
my $file = $zone->{'file'};
|
||||
if (!$in{'show'}) {
|
||||
&lock_all_files();
|
||||
&lock_file(&make_chroot(&absolute_path($zone->{'file'})));
|
||||
&before_editing($zone);
|
||||
}
|
||||
my @recs = &read_zone_file($file, $dom);
|
||||
@@ -118,7 +119,7 @@ for(my $i=0; defined($in{"type_$i"}); $i++) {
|
||||
&bump_soa_record($file, \@recs);
|
||||
&sign_dnssec_zone_if_key($zone, \@recs);
|
||||
&after_editing($zone);
|
||||
&unlock_all_files();
|
||||
&unlock_file(&make_chroot(&absolute_path($zone->{'file'})));
|
||||
&redirect("edit_master.cgi?zone=$in{'zone'}&view=$in{'view'}");
|
||||
|
||||
sub expand_mods
|
||||
|
||||
@@ -431,7 +431,7 @@ else {
|
||||
# For other record types, just save the lines
|
||||
$in{'values'} =~ s/\r//g;
|
||||
my @vlines = split(/\n/, $in{'values'});
|
||||
$vals = join(" ",map { $_ =~ /^\S+$/ ? $_ : "\"$_\"" } @vlines);
|
||||
$vals = join(" ",map { $_ =~ /\s|;/ ? "\"$_\"" : $_ } @vlines);
|
||||
}
|
||||
$fullname = &convert_to_absolute($in{'name'}, $in{'origin'});
|
||||
if ($config{'short_names'}) {
|
||||
|
||||
@@ -3,6 +3,7 @@ create_title=Erzeuge einen Cluster-Cron-Auftrag
|
||||
delete_enone=Keine ausgewählt
|
||||
delete_err=Fehlgeschlagen Cluster-Cron-Aufträge zu löschen
|
||||
edit_all=<Alle Hosts>
|
||||
edit_emissing=Cron-Job existiert nicht mehr!
|
||||
edit_group=Mitglieder von $1
|
||||
edit_servers=Auf Server ausführen
|
||||
edit_this=diesem Server
|
||||
@@ -25,7 +26,7 @@ log_create_l=Cluster-Cron-Auftrag $2 für $1 erzeugt
|
||||
log_delete=Cluster-Cron-Auftrag für $1 gelöscht
|
||||
log_delete_l=Cluster-Cron-Auftrag $2 für $1 gelöscht
|
||||
log_deletes=$1 Cluster-Cron-Aufträge gelöscht
|
||||
log_modify=Cluster-Cron-Auftrag für $1 bearbeitet
|
||||
log_modify=Cluster-Cron-Auftrag für $1 bearbeitet
|
||||
log_modify_l=Cluster-Cron-Auftrag $2 für $1 bearbeitet
|
||||
log_run=$1 ist auf $2 Servern ausgeführt
|
||||
log_run_l=$1 auf $2 ausgeführt
|
||||
|
||||
@@ -3,3 +3,4 @@ category=cluster
|
||||
os_support=solaris *-linux hpux freebsd osf1 irix unixware openserver macos openbsd aix netbsd
|
||||
depends=cron
|
||||
longdesc=Create scheduled Cron jobs that run on multiple servers simultaneously.
|
||||
desc_de=Cluster Cron-Jobs
|
||||
|
||||
@@ -111,10 +111,10 @@ if (@icons < @hosts) {
|
||||
"value=\"$text{'uedit_sync'}\"></td>\n";
|
||||
}
|
||||
|
||||
print "</form><form action=\"delete_group.cgi\">\n";
|
||||
print "</tr></table></form><p><form action=\"delete_group.cgi\">\n";
|
||||
print "<input type=hidden name=group value=\"$ginfo{'group'}\">\n";
|
||||
print "<td align=right><input type=submit value=\"$text{'delete'}\"></td> </tr>\n";
|
||||
print "</form></table><p>\n";
|
||||
print "<input type=submit value=\"$text{'delete'}\">\n";
|
||||
print "</form><p>\n";
|
||||
|
||||
print &ui_hr();
|
||||
print &ui_subheading($text{'uedit_hosts'});
|
||||
|
||||
@@ -429,11 +429,11 @@ if (@icons < @hosts) {
|
||||
"value=\"$text{'uedit_sync'}\"></td>\n";
|
||||
}
|
||||
|
||||
print "</form><form action=\"delete_user.cgi\">\n";
|
||||
print "</tr></table></form><p><form action=\"delete_user.cgi\">\n";
|
||||
print "<input type=hidden name=user value=\"$uinfo{'user'}\">\n";
|
||||
print "<td align=right><input type=submit ",
|
||||
"value=\"$text{'delete'}\"></td> </tr>\n";
|
||||
print "</form></table><p>\n";
|
||||
print "<input type=submit ",
|
||||
"value=\"$text{'delete'}\">\n";
|
||||
print "</form><p>\n";
|
||||
|
||||
print &ui_hr();
|
||||
print &ui_subheading($text{'uedit_hosts'});
|
||||
|
||||
@@ -68,7 +68,7 @@ else {
|
||||
print "<b>$text{'index_nohosts'}</b><p>\n";
|
||||
}
|
||||
$formno++;
|
||||
print "<form action=add.cgi>\n";
|
||||
print "<br><br><form action=add.cgi>\n";
|
||||
print "<table width=100%><tr>\n";
|
||||
@addservers = grep { !$gothost{$_->{'id'}} } @servers;
|
||||
if (@addservers) {
|
||||
|
||||
@@ -4,6 +4,7 @@ max_jobs=Nombre m
|
||||
show_time=Mostra la planificació dels treballs,1,1-Sí,0-No
|
||||
show_comment=Mostra els comentaris dels treballs,1,1-Sí,0-No
|
||||
show_run=Mostra l'estat actual dels treballs,1,2-Sí, i permet l'inici i l'aturada,1-Sí,0-No
|
||||
show_next=Mostra-ho la propera vegada que s'executi cada treball,1,1-Sí,0-No
|
||||
match_mode=Busca els processos dels treballs per,1,1-Només l'ordre,0-L'ordre i els arguments
|
||||
match_user=Fes coincidir els noms d'usuaris en buscar processos de treballs,1,1-Sí,0-No
|
||||
kill_subs=Mata els subprocessos en matar els treballs,1,1-Sí,0-No
|
||||
|
||||
@@ -726,8 +726,9 @@ $dir = "$config{'run_parts_dir'}/$dir"
|
||||
opendir(DIR, &translate_filename($dir));
|
||||
local @rv = readdir(DIR);
|
||||
closedir(DIR);
|
||||
@rv = grep { !/^\./ } @rv;
|
||||
@rv = grep { /^[a-zA-Z0-9\_\-]+$/ } @rv;
|
||||
@rv = map { $dir."/".$_ } @rv;
|
||||
@rv = grep { -x $_ } @rv;
|
||||
return @rv;
|
||||
}
|
||||
|
||||
@@ -813,8 +814,10 @@ change_special_mode(form, 0);
|
||||
|
||||
function change_special_mode(form, special)
|
||||
{
|
||||
form.special_def[0].checked = special;
|
||||
form.special_def[1].checked = !special;
|
||||
if(form.special_def) {
|
||||
form.special_def[0].checked = special;
|
||||
form.special_def[1].checked = !special;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
EOF
|
||||
@@ -971,8 +974,10 @@ change_special_mode(form, 0);
|
||||
|
||||
function change_special_mode(form, special)
|
||||
{
|
||||
form.special_def[0].checked = special;
|
||||
form.special_def[1].checked = !special;
|
||||
if(form.special_def) {
|
||||
form.special_def[0].checked = special;
|
||||
form.special_def[1].checked = !special;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
EOF
|
||||
@@ -1672,6 +1677,9 @@ elsif ($job->{'special'} eq 'yearly') {
|
||||
'months' => 1,
|
||||
'weekdays' => '*' };
|
||||
}
|
||||
elsif ($job->{'special'} eq 'reboot') {
|
||||
return undef;
|
||||
}
|
||||
my @mins = &cron_all_ranges($job->{'mins'}, 0, 59);
|
||||
my @hours = &cron_all_ranges($job->{'hours'}, 0, 23);
|
||||
my @days = &cron_all_ranges($job->{'days'}, 1, 31);
|
||||
@@ -1714,11 +1722,13 @@ if ($w eq "*") {
|
||||
}
|
||||
elsif ($w =~ /^\*\/(\d+)$/) {
|
||||
# only every Nth
|
||||
for($j=$min; $j<=$max; $j+=$1) { $inuse{$j}++; }
|
||||
my $step = $1 || 1;
|
||||
for($j=$min; $j<=$max; $j+=$step) { $inuse{$j}++; }
|
||||
}
|
||||
elsif ($w =~ /^(\d+)-(\d+)\/(\d+)$/) {
|
||||
# only every Nth of some range
|
||||
for($j=$1; $j<=$2; $j+=$3) { $inuse{int($j)}++; }
|
||||
my $step = $3 || 1;
|
||||
for($j=$1; $j<=$2; $j+=$step) { $inuse{int($j)}++; }
|
||||
}
|
||||
elsif ($w =~ /^(\d+)-(\d+)$/) {
|
||||
# all of some range
|
||||
|
||||
@@ -62,7 +62,7 @@ print &ui_table_row($text{'edit_active'},
|
||||
&ui_yesno_radio("active", $job->{'active'} ? 1 : 0));
|
||||
|
||||
# Next run time
|
||||
if (!$in{'new'}) {
|
||||
if (!$in{'new'} && ($config{'show_next'} || $userconfig{'show_next'})) {
|
||||
$n = &next_run($job);
|
||||
print &ui_table_row($text{'edit_next'},
|
||||
$n ? &make_date($n) : "<i>$text{'index_nunknown'}</i>");
|
||||
|
||||
@@ -14,6 +14,8 @@ index_manual=Edita manualment els treballs cron.
|
||||
index_return=a la llista de cron
|
||||
index_env=Variable d'entorn
|
||||
index_move=Desplaça
|
||||
index_next=Propera execució
|
||||
index_nunknown=Desconeguda
|
||||
index_run=En execució
|
||||
index_ecmd=No s'ha trobat l'ordre $1 en gestionar les configuracions d'usuari de Cron. Pot ser que Cron no estigui instal·lat en aquest sistema?
|
||||
index_esingle=El fitxer $1 que llista els treballs Cron no existeix. Pot ser que Cron no estigui instal·lat en aquest sistema?
|
||||
@@ -36,6 +38,7 @@ edit_ecannot=No tens perm
|
||||
edit_details=Detalls del treball
|
||||
edit_user=Executa el treball cron com
|
||||
edit_active=Activa
|
||||
edit_next=Hora de la ropera execució
|
||||
edit_commands=Ordres
|
||||
edit_command=Ordre
|
||||
edit_comment=Descripció
|
||||
|
||||
19
cron/lang/hu
19
cron/lang/hu
@@ -40,6 +40,7 @@ edit_hours=
|
||||
edit_input=Adatbevitel a parancshoz
|
||||
edit_mins=Percek
|
||||
edit_months=Hónapok
|
||||
edit_next=Következő futtatás ideje
|
||||
edit_range=Dátum határok a futtatáshoz
|
||||
edit_return=cron munka
|
||||
edit_run=Futtatás most
|
||||
@@ -85,15 +86,21 @@ index_create=
|
||||
index_delete=Kiválasztott munka törlése
|
||||
index_disable=Kiválasztott munka letiltása
|
||||
index_ecmd=A $1 Cron parancsot amit a felhasználónak állítani szeretne nem találom. Talán a Cron nincs telepítve a rendszerbe?
|
||||
index_econfigcheck=A Cron munkákat nem tudjuk kezelni az ön rendszerén, mivel a modul beállítások nem megfelelőek: $1
|
||||
index_ecreate=Új környezeti változó létrehozása
|
||||
index_ecrondir=A Cron munka könyvtár ( $1 ) nem létezik. Előfordulhat, hogy a modul beállításai nem pontosak vagy a Cron nincs telepítve?
|
||||
index_ecrondir_create=Megpróbálja létrehozni $1 könyvtárat a munkáknak?
|
||||
index_enable=Kiválasztott munka engedélyezése
|
||||
index_env=Környezeti változó
|
||||
index_esearch=Nem található a keresett $1
|
||||
index_esingle=Ez a fájl $1 a Cron munkák listájában nem létezik. Talán a Cron nincs telepítve a rendszerbe?
|
||||
index_manual=Beállítások kézi szerkesztése.
|
||||
index_move=Mozgatás
|
||||
index_next=Következő futtatás
|
||||
index_none=Ezen a rendszeren nincsenek cron munkák
|
||||
index_none2=Jelenleg nincs olyan crom munka, amihez Önnek joga lenne.
|
||||
index_none3=Önnek nincs semmilyen cron munkája jelenleg.
|
||||
index_nunknown=Ismeretlen
|
||||
index_ok=Keresés
|
||||
index_reset=Keresés visszaállítása.
|
||||
index_return=a cron listához
|
||||
@@ -101,6 +108,7 @@ index_run=Fut?
|
||||
index_search=Időzített feladat (Cron munka) keresése:
|
||||
index_searchres=Egyező Cron munkák: $1 ..
|
||||
index_title=Időzitett futtatások (Cron munkák)
|
||||
index_toomany2=Túl sok megjelenítendő munka. Használja a keresési mezőt a lista szűrésére!
|
||||
index_user=Felhasználó
|
||||
index_when=Futtatás megadott időben
|
||||
kill_ecannot=Önnek nincs joga megszakítani ezt a munkát
|
||||
@@ -134,6 +142,12 @@ log_kill_l="$2" Cron munka megszak
|
||||
log_modify=Cron munka módosítása $1 -nek
|
||||
log_modify_l="$2" Cron munka módosítása $1-nek
|
||||
log_move=Cron munka mozgatása $1 -nak
|
||||
manual_ecannot=Nincs engedélye kézzel szerkeszteni a Cron munkákat
|
||||
manual_edit=Szerkesztendő Cron állomány:
|
||||
manual_editing=Használja az alábbi szövegdobozt a $1 Cron munkáinak szerkesztésére. Legyen óvatos, a Webmin nem végez rajta ellenőrzést!
|
||||
manual_efile=A kiválasztott állomány érvénytelen!
|
||||
manual_ok=Szerkesztés
|
||||
manual_title=Cron munkák kézi szerkesztése
|
||||
move_err=Nem lehet mozgatni a Cron munkát
|
||||
move_etype=Ezt a munkát nem lehet mozgatni
|
||||
range_all=Fussán bármilyen dátumnál
|
||||
@@ -145,19 +159,24 @@ save_eallow=A(z) '$1' felhaszn
|
||||
save_ecannot=Önnek nincs jogosultsága létrehozni '$1' cron munkáit.
|
||||
save_ecannot2=Önnek nincs joga cron munkákat létrehozni
|
||||
save_ecmd=Ön nem adott meg futtatandó parancsot.
|
||||
save_eidx=A Cron állomány sikeresen mentésre került, azonban nem került futtatásra mivel nem találta meg a rendszer!
|
||||
save_enone=Semmilyen $1 nem lett kiválasztva végrehajtáshoz.
|
||||
save_err=A cron munka elmentése nem sikerült.
|
||||
save_euser=Egy felhasználót muszáj kiválasztani.
|
||||
save_euser2=A $1 felhasználó nem létezik
|
||||
ucwhen_boot=Rendszerindításkor
|
||||
ucwhen_cron=A cron időben $1
|
||||
ucwhen_day=Minden nap $2:$1 időben
|
||||
ucwhen_hour=Minden órában $1 óra után
|
||||
ucwhen_interval=Minden $1 másodpercben
|
||||
ucwhen_min=Minden percben
|
||||
ucwhen_month=A $napokon minden hónapban $2:$1
|
||||
ucwhen_weekday=Minden $3 -ban $2:$1 időben
|
||||
when_boot=rendszerindításkor
|
||||
when_cron=a cron időben $1
|
||||
when_day=minden nap $2:$1 időben
|
||||
when_hour=minden órában $1 után óránként
|
||||
when_interval=minden $1 másodpercben
|
||||
when_min=minden percben
|
||||
when_month=a $3 napon minden hónapban $2:$1
|
||||
when_weekday=minden $3 a $2:$1
|
||||
|
||||
@@ -1 +1 @@
|
||||
desc_fr=Tâches Cron
|
||||
desc_fr=Tâches Cron
|
||||
|
||||
@@ -40,9 +40,9 @@ index_horder1=Estructura de fitxers
|
||||
index_horder2=Nom
|
||||
index_horder3=Adreça del maquinari
|
||||
index_horder4=Adreça IP
|
||||
index_togroup=Grup
|
||||
index_tosubnet=Subxarxa
|
||||
index_toshared=Xarxa
|
||||
index_togroup=Grup:
|
||||
index_tosubnet=Subxarxa:
|
||||
index_toshared=Xarxa:
|
||||
index_ndisplay=Mostra les xarxes i subxarxes per:
|
||||
index_norder0=Assignació
|
||||
index_norder1=Estructura de fitxers
|
||||
|
||||
@@ -22,7 +22,9 @@ elsif ($archive_type =~ /x-7z/) {
|
||||
$cmd = "7z x ".quotemeta("$cwd/$in{'file'}")." -o" .quotemeta($cwd);
|
||||
}
|
||||
elsif ($archive_type =~ /\/zip/) {
|
||||
$cmd = "unzip ".quotemeta("$cwd/$in{'file'}")." -d ".quotemeta($cwd);
|
||||
my $unzip_out = `unzip --help`;
|
||||
my $uu = ($unzip_out =~ /-UU/ ? '-UU' : undef);
|
||||
$cmd = "unzip $uu -q -o ".quotemeta("$cwd/$in{'file'}")." -d ".quotemeta($cwd);
|
||||
}
|
||||
elsif ($archive_type =~ /\/x-rar|\/vnd\.rar/) {
|
||||
$cmd = "unrar x -r -y ".quotemeta("$cwd/$in{'file'}").
|
||||
|
||||
@@ -67,6 +67,7 @@ sub get_paths {
|
||||
@allowed_paths = map { $_ eq '$HOME' ? @remote_user_info[7] : $_ }
|
||||
@allowed_paths;
|
||||
@allowed_paths = map { s/\$USER/$remote_user/g; $_ } @allowed_paths;
|
||||
@allowed_paths = &unique(@allowed_paths);
|
||||
if (scalar(@allowed_paths) == 1) {
|
||||
$base = $allowed_paths[0];
|
||||
} else {
|
||||
@@ -75,6 +76,9 @@ sub get_paths {
|
||||
}
|
||||
@allowed_paths = map { &simplify_path($_) } &unique(@allowed_paths);
|
||||
$path = $in{'path'} || '';
|
||||
$html_escaped_path = html_escape($path);
|
||||
$urlized_path = urlize($path);
|
||||
|
||||
$cwd = &simplify_path($base.$path);
|
||||
|
||||
# Work out max upload size
|
||||
@@ -377,7 +381,7 @@ sub print_interface {
|
||||
print &ui_checked_columns_row(\@row_data, "", "name", $vlink);
|
||||
}
|
||||
print ui_columns_end();
|
||||
print &ui_hidden("path", $path),"\n";
|
||||
print &ui_hidden("path", $urlized_path),"\n";
|
||||
print &ui_form_end();
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ unless (opendir ( DIR, $cwd )) {
|
||||
my $delimiter = ( $setype ? '\n' : ',' );
|
||||
my @searray =
|
||||
map { [ split( /\s+/, $_, 2 ) ] } split( /$delimiter/, $output );
|
||||
%secontext = map { $_->[1] => ($_->[0] eq "?" ? undef : ('<span data-attributes="x">' . $_->[0] . '</span>') ) } @searray;
|
||||
%secontext = map { $_->[1] => ($_->[0] eq "?" ? undef : ('<span>' . $_->[0] . '</span>') ) } @searray;
|
||||
}
|
||||
|
||||
# Get info about directory entries
|
||||
|
||||
@@ -24,7 +24,7 @@ actions=Accions
|
||||
size=Mida
|
||||
owner_user=Usuari
|
||||
owner_group=Grup
|
||||
permissions=Permisos
|
||||
permissions=Mode
|
||||
selinux=Context de seguretat
|
||||
attributes=Atributs
|
||||
last_mod_time=Modificat
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<div class="form-group">
|
||||
<label>$text{'new_folder_name'}</label>
|
||||
<input id="name" name="name" type="text" class="form-control" data-placement="right" data-content="$text{'provide_folder_name'}" data-trigger="manual">
|
||||
<input type='hidden' name='path' value='$path'>
|
||||
<input type='hidden' name='path' value='$urlized_path'>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -51,7 +51,7 @@
|
||||
<div class="form-group">
|
||||
<label>$text{'new_file_name'}</label>
|
||||
<input name="name" type="text" class="form-control" data-placement="right" data-content="$text{'provide_file_name'}" data-trigger="manual">
|
||||
<input type='hidden' name='path' value='$path'>
|
||||
<input type='hidden' name='path' value='$urlized_path'>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -76,7 +76,7 @@
|
||||
<label>$text{'new_name'}</label>
|
||||
<input name="name" type="text" class="form-control" data-placement="right" data-content="$text{'provide_new_file_name'}" data-trigger="manual">
|
||||
<input type='hidden' name='file' value='' required>
|
||||
<input type='hidden' name='path' value='$path'>
|
||||
<input type='hidden' name='path' value='$urlized_path'>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -310,7 +310,7 @@
|
||||
<label>$text{'dialog_user_pass'}</label>
|
||||
<input name="password" type="password" class="form-control">
|
||||
</div>
|
||||
<input type='hidden' name='path' value='$path'>
|
||||
<input type='hidden' name='path' value='$urlized_path'>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
@@ -329,9 +329,9 @@
|
||||
<h4 class="warning">$text{'upload_files'}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form id='upload-form' method='post' action='upload.cgi?path=$path&id=$upid' enctype='multipart/form-data' onsubmit='window.open("$gconfig{'webprefix'}/uptracker.cgi?id=$upid&uid=$uid", "uptracker", "toolbar=no, menubar=no, scrollbars=no, location=no, resizable=no, width=screen.width, height=screen.height")'>
|
||||
<form id='upload-form' method='post' action='upload.cgi?path=$urlized_path&id=$upid' enctype='multipart/form-data' onsubmit='window.open("$gconfig{'webprefix'}/uptracker.cgi?id=$upid&uid=$uid", "uptracker", "toolbar=no, menubar=no, scrollbars=no, location=no, resizable=no, width=screen.width, height=screen.height")'>
|
||||
<input type='file' id='upfiles' name='upfiles' multiple onchange='countUploads(this)'>
|
||||
<input type='hidden' name='path' value='$path'>
|
||||
<input type='hidden' name='path' value='$urlized_path'>
|
||||
</form>
|
||||
<div id="readyForUploadList" class="well">
|
||||
</div>
|
||||
@@ -357,7 +357,7 @@
|
||||
<label>$text{'search_label'}</label>
|
||||
<input id="query" name="query" type="text" class="form-control" data-placement="right" data-content="$text{'provide_search_query'}" data-trigger="manual"><br>
|
||||
<input id="caseins" name="caseins" type="checkbox" checked="checked"> $text{'search_insensitive'}
|
||||
<input type='hidden' name='path' value='$path'>
|
||||
<input type='hidden' name='path' value='$urlized_path'>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="form-group">
|
||||
<label>$text{'new_folder_name'}</label>
|
||||
<input id="name" name="name" type="text" title="$text{'provide_folder_name'}">
|
||||
<input type='hidden' name='path' value='$path'>
|
||||
<input type='hidden' name='path' value='$urlized_path'>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -17,7 +17,7 @@
|
||||
<div class="form-group">
|
||||
<label>$text{'new_file_name'}</label>
|
||||
<input name="name" type="text">
|
||||
<input type='hidden' name='path' value='$path'>
|
||||
<input type='hidden' name='path' value='$urlized_path'>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -28,7 +28,7 @@
|
||||
<label>$text{'new_name'}</label>
|
||||
<input name="name" type="text">
|
||||
<input type='hidden' name='file' value='' required>
|
||||
<input type='hidden' name='path' value='$path'>
|
||||
<input type='hidden' name='path' value='$urlized_path'>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -97,15 +97,15 @@
|
||||
<input name="username" type="text"><br>
|
||||
<label>$text{'dialog_user_pass'}</label>
|
||||
<input name="password" type="password">
|
||||
<input type='hidden' name='path' value='$path'>
|
||||
<input type='hidden' name='path' value='$urlized_path'>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="readyForUploadDialog" class="modal">
|
||||
<form id='upload-form' method='post' action='upload.cgi?path=$path&id=$upid' enctype='multipart/form-data' onsubmit='window.open("$gconfig{'webprefix'}/uptracker.cgi?id=$upid&uid=$uid", "uptracker", "toolbar=no, menubar=no, scrollbars=no, location=no, resizable=no, width=screen.width, height=screen.height")'>
|
||||
<form id='upload-form' method='post' action='upload.cgi?path=$urlized_path&id=$upid' enctype='multipart/form-data' onsubmit='window.open("$gconfig{'webprefix'}/uptracker.cgi?id=$upid&uid=$uid", "uptracker", "toolbar=no, menubar=no, scrollbars=no, location=no, resizable=no, width=screen.width, height=screen.height")'>
|
||||
<input type='file' id='upfiles' name='upfiles' multiple onchange='countUploads(this)'>
|
||||
<input type='hidden' name='path' value='$path'>
|
||||
<input type='hidden' name='path' value='$urlized_path'>
|
||||
</form>
|
||||
<div id="readyForUploadList" class="well">
|
||||
</div>
|
||||
@@ -179,7 +179,7 @@
|
||||
<label>$text{'search_label'}</label>
|
||||
<input id="query" name="query" type="text" title="$text{'provide_search_query'}"><br>
|
||||
<input id="caseins" name="caseins" type="checkbox" checked="checked"> $text{'search_insensitive'}
|
||||
<input type='hidden' name='path' value='$path'>
|
||||
<input type='hidden' name='path' value='$urlized_path'>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<div id="quicks" style="float:right">
|
||||
<a href="javascript:void(0)" onclick='searchDialog()' title="$text{'search'}"><img src='images/icons/quick/edit-find.png' alt="$text{'search'}" /></a>
|
||||
<a href="bookmark.cgi?path=$path" title="$text{'bookmark_folder'}"><img src='images/icons/quick/bookmark-new.png' alt="$text{'bookmark_folder'}" /></a>
|
||||
<a href="bookmark.cgi?path=$urlized_path" title="$text{'bookmark_folder'}"><img src='images/icons/quick/bookmark-new.png' alt="$text{'bookmark_folder'}" /></a>
|
||||
<a tabindex="0" class="fg-button fg-button-icon-right ui-widget ui-state-default ui-corner-all" id="flat">
|
||||
<img src="images/icons/quick/go-down.png" alt="$text{'config_bookmarks'}">
|
||||
</a>
|
||||
@@ -13,7 +13,7 @@
|
||||
<a href="javascript:void(0)" onclick='invertSelection()' title="$text{'invert_selection'}"><img src='images/icons/quick/invert.png' alt="$text{'invert_selection'}" /></a>
|
||||
<a href="javascript:void(0)" onclick='copySelected()' title="$text{'copy_selected'}"><img src='images/icons/quick/edit-copy.png' alt="$text{'copy_selected'}" /></a>
|
||||
<a href="javascript:void(0)" onclick='cutSelected()' title="$text{'cut_selected'}"><img src='images/icons/quick/edit-cut.png' alt="$text{'cut_selected'}" /></a>
|
||||
<a href='paste.cgi?path=$path' title="$text{'paste'}"><img src='images/icons/quick/edit-paste.png' alt="$text{'paste'}" /></a>
|
||||
<a href='paste.cgi?path=$urlized_path' title="$text{'paste'}"><img src='images/icons/quick/edit-paste.png' alt="$text{'paste'}" /></a>
|
||||
<a href="javascript:void(0)" onclick='createFolderDialog()' title="$text{'create_folder'}"><img src='images/icons/quick/folder-new.png' alt="$text{'create_folder'}" /></a>
|
||||
<a href="javascript:void(0)" onclick='createFileDialog()' title="$text{'create_file'}"><img src='images/icons/quick/document-new.png' alt="$text{'create_file'}" /></a>
|
||||
<a href="javascript:void(0)" onclick='compressDialog()' title="$text{'compress_selected'}"><img src='images/icons/quick/compress.png' alt="$text{'compress_selected'}" /></a>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<button class="btn btn-inverse" onclick='invertSelection()' title="$text{'invert_selection'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<i class="fa fa-check-square" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button class="btn btn-inverse" onclick='window.location.href="index.cgi?path=$path"' title="$text{'refresh'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<button class="btn btn-inverse" onclick='window.location.href="index.cgi?path=$urlized_path"' title="$text{'refresh'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<i class="fa fa-refresh" aria-hidden="true"></i>
|
||||
</button>
|
||||
<div class="btn-group">
|
||||
@@ -50,7 +50,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="location.href='paste.cgi?path=$path'">
|
||||
<a onclick="location.href='paste.cgi?path=$urlized_path'">
|
||||
<i class="fa fa-paste" aria-hidden="true"></i> $text{'paste'}
|
||||
</a>
|
||||
</li>
|
||||
@@ -97,7 +97,7 @@
|
||||
$text{'menu_bookmarks'} <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu pull-right" aria-labelledby="dropdownMenu1">
|
||||
<li>
|
||||
<a href="bookmark.cgi?path=$path">
|
||||
<a href="bookmark.cgi?path=$urlized_path">
|
||||
<i class="fa fa-bookmark-o" aria-hidden="true"></i> $text{'bookmark_folder'}
|
||||
</a>
|
||||
$bookmarks
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<button class="btn btn-inverse" onclick='searchDialog()' title="$text{'search'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<i class="fa fa-search" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button class="btn btn-inverse" onclick="location.href='bookmark.cgi?path=$path'" title="$text{'bookmark_folder'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<button class="btn btn-inverse" onclick="location.href='bookmark.cgi?path=$urlized_path'" title="$text{'bookmark_folder'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<i class="fa fa-bookmark-o" aria-hidden="true"></i>
|
||||
</button>
|
||||
<div class="btn-group">
|
||||
@@ -13,7 +13,7 @@
|
||||
$bookmarks
|
||||
</ul>
|
||||
</div>
|
||||
<button class="btn btn-inverse" onclick='window.location.href="index.cgi?path=$path"' title="$text{'refresh'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<button class="btn btn-inverse" onclick='window.location.href="index.cgi?path=$urlized_path"' title="$text{'refresh'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<i class="fa fa-refresh" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button class="btn btn-inverse" onclick='selectAll()' title="$text{'select_all'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
@@ -28,7 +28,7 @@
|
||||
<button class="btn btn-inverse" onclick='cutSelected()' title="$text{'cut_selected'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<i class="fa fa-cut" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button class="btn btn-inverse" onclick="location.href='paste.cgi?path=$path'" title="$text{'paste'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<button class="btn btn-inverse" onclick="location.href='paste.cgi?path=$urlized_path'" title="$text{'paste'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<i class="fa fa-paste" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button class="btn btn-inverse" onclick='createFolderDialog()' title="$text{'create_folder'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# ipv6 initialization
|
||||
if ($config{'save_file6'}) {
|
||||
# Force use of a different save file, and webmin's functions
|
||||
$ip6tables_save_file = $config{'save6_file'};
|
||||
$ip6tables_save_file = $config{'save_file6'};
|
||||
}
|
||||
else {
|
||||
if (-r "$module_root_directory/$gconfig{'os_type'}-lib.pl") {
|
||||
|
||||
@@ -41,8 +41,12 @@ else {
|
||||
($zone) = grep { $_->{'default'} } @zones;
|
||||
}
|
||||
$zone ||= $zones[0];
|
||||
my @azones = &list_firewalld_zones(1);
|
||||
my ($azone) = grep { $_->{'name'} eq $zone->{'name'} } @azones;
|
||||
my ($azone);
|
||||
eval {
|
||||
local $main::error_must_die = 1;
|
||||
my @azones = &list_firewalld_zones(1);
|
||||
($azone) = grep { $_->{'name'} eq $zone->{'name'} } @azones;
|
||||
};
|
||||
|
||||
# Show zone selector
|
||||
print &ui_form_start("index.cgi");
|
||||
@@ -116,17 +120,19 @@ else {
|
||||
print &ui_links_row(\@links);
|
||||
}
|
||||
|
||||
# Show interfaces for this zone
|
||||
print &ui_form_start("save_ifaces.cgi");
|
||||
print &ui_hidden("zone", $zone->{'name'});
|
||||
print "<b>$text{'index_ifaces'}</b>\n";
|
||||
my %zifcs = map { $_, 1 } &unique(@{$azone->{'interfaces'}},
|
||||
@{$zone->{'interfaces'}});
|
||||
foreach my $i (&list_system_interfaces()) {
|
||||
print &ui_checkbox("iface", $i, $i, $zifcs{$i}),"\n";
|
||||
if ($azone) {
|
||||
# Show interfaces for this zone
|
||||
print &ui_form_start("save_ifaces.cgi");
|
||||
print &ui_hidden("zone", $zone->{'name'});
|
||||
print "<b>$text{'index_ifaces'}</b>\n";
|
||||
my %zifcs = map { $_, 1 } &unique(@{$azone->{'interfaces'}},
|
||||
@{$zone->{'interfaces'}});
|
||||
foreach my $i (&list_system_interfaces()) {
|
||||
print &ui_checkbox("iface", $i, $i, $zifcs{$i}),"\n";
|
||||
}
|
||||
print &ui_submit($text{'save'});
|
||||
print &ui_form_end();
|
||||
}
|
||||
print &ui_submit($text{'save'});
|
||||
print &ui_form_end();
|
||||
|
||||
# Show start/apply buttons
|
||||
print &ui_hr();
|
||||
|
||||
@@ -1371,10 +1371,11 @@ elsif ($action_mode eq "upstart") {
|
||||
}
|
||||
elsif ($action_mode eq "systemd") {
|
||||
# Check with systemd if it is running
|
||||
my @systemds = &list_systemd_services();
|
||||
my ($u) = grep { $_->{'name'} eq $name ||
|
||||
$_->{'name'} eq $name.".service" } @systemds;
|
||||
return !$u ? -1 : $u->{'status'} ? 1 : 0;
|
||||
my $out = &backquote_command(
|
||||
"systemctl is-failed ".quotemeta($name)." 2>/dev/null");
|
||||
$out =~ s/\r?\n//g;
|
||||
return $out eq "active" ? 1 :
|
||||
$out eq "inactive" || $out eq "failed" ? 0 : -1;
|
||||
}
|
||||
elsif ($action_mode eq "launchd") {
|
||||
my @agents = &list_launchd_agents();
|
||||
@@ -1386,6 +1387,34 @@ else {
|
||||
}
|
||||
}
|
||||
|
||||
=head2 list_action_names()
|
||||
|
||||
Returns a list of just action names
|
||||
|
||||
=cut
|
||||
sub list_action_names
|
||||
{
|
||||
if ($init_mode eq "upstart") {
|
||||
return map { $_->{'name'} } &list_upstart_services();
|
||||
}
|
||||
elsif ($init_mode eq "systemd") {
|
||||
return map { $_->{'name'} } &list_systemd_services();
|
||||
}
|
||||
elsif ($init_mode eq "init") {
|
||||
return map { my @w = split(/\s+/, $_); $w[0] } &list_actions();
|
||||
}
|
||||
elsif ($init_mode eq "win32") {
|
||||
return map { $_->{'name'} } &list_win32_services();
|
||||
}
|
||||
elsif ($init_mode eq "rc") {
|
||||
return map { $_->{'name'} } &list_rc_scripts();
|
||||
}
|
||||
elsif ($init_mode eq "launchd") {
|
||||
return map { $_->{'name'} } &list_launchd_agents();
|
||||
}
|
||||
return ( );
|
||||
}
|
||||
|
||||
=head2 get_action_mode(name)
|
||||
|
||||
Returns the init mode used by some action. May be different from the global
|
||||
|
||||
@@ -8,8 +8,8 @@ change_cmd=Wechsel zum Runlevel $1 mit Befehl $2. Dies kann einige Zeit dauern u
|
||||
change_err=Sie sind nicht berechtigt in einen anderen Runlevel zu wechseln
|
||||
change_title=Wechsele Runlevel
|
||||
create_title=Dienst erstellen
|
||||
edit_badK=Weil dieser Dienst nicht richtig erstellt wurde wird er nur in Runlevel $1 gestoppt.
|
||||
edit_badS=Weil dieser Dienst nicht richtig erstellt wurde wird er nur in Runlevel $1 gestartet.
|
||||
edit_badK=Weil dieser Dienst nicht richtig erstellt wurde, wird er nur in Runlevel $1 gestoppt.
|
||||
edit_badS=Weil dieser Dienst nicht richtig erstellt wurde, wird er nur in Runlevel $1 gestartet.
|
||||
edit_boot=Start beim Systemstart?
|
||||
edit_condrestartnow=Neustart wenn nötig
|
||||
edit_desc=Beschreibung
|
||||
@@ -220,6 +220,7 @@ systemd_status=Aktueller Status
|
||||
systemd_status0=Läuft nicht
|
||||
systemd_status1=Läuft mit PID $1
|
||||
systemd_status2=Läuft
|
||||
systemd_status3=Unbekannt!
|
||||
systemd_stop=Befehl zum Ausführen beim Herunterfahren
|
||||
systemd_title1=Erstelle Systemd-Dienst
|
||||
systemd_title2=Editiere Systemd-Dienst
|
||||
|
||||
210
lang/fr
210
lang/fr
@@ -1,35 +1,35 @@
|
||||
main_return=Retourner à $1
|
||||
main_return=Retourner à $1
|
||||
main_homepage=Page d'accueil
|
||||
main_feedback=Rapport...
|
||||
main_switch=Changer d'utilisateur...
|
||||
main_logout=Se déconnecter
|
||||
main_logout=Se déconnecter
|
||||
main_version=Version $1 sur $2 ($3)
|
||||
main_title=Webmin $1 sur $2 ($3)
|
||||
main_title2=Webmin
|
||||
main_none=Vous n'avez accès à aucun modules Webmin.
|
||||
main_skill=Niveau de compétence
|
||||
main_none=Vous n'avez accès à aucun modules Webmin.
|
||||
main_skill=Niveau de compétence
|
||||
main_readonly=(Mode lecture seule)
|
||||
|
||||
link_essl=The Net::Le module SSLeay Perl requis pour créer des connections HTTPS n'est pas installé sur votre système.
|
||||
link_essl=The Net::Le module SSLeay Perl requis pour créer des connections HTTPS n'est pas installé sur votre système.
|
||||
|
||||
category_servers=Serveurs
|
||||
category_hardware=Matériel
|
||||
category_system=Système
|
||||
category_hardware=Matériel
|
||||
category_system=Système
|
||||
category_webmin=Webmin
|
||||
category_net=Réseau
|
||||
category_net=Réseau
|
||||
category_syslet=Syslets
|
||||
category_cluster=Cluster
|
||||
category_info=Information
|
||||
category_=Autres
|
||||
|
||||
longcategory_servers=Modules pour les configurations web, email, FTP et autres serveurs
|
||||
longcategory_hardware=Modules pour les imprimantes, disques et autres configurations de matériel
|
||||
longcategory_system=Modules pour les utilisateurs, fichiers système, tâches Cron et autres paramètres du système
|
||||
longcategory_webmin=Modules pour configurer Webmin lui même
|
||||
longcategory_net=Modules pour la configuration de gestion du réseau et des services réseau
|
||||
longcategory_cluster=Modules permettant de contrôler de multiple serveurs à partir d'une seule interface
|
||||
longcategory_info=Modules qui affichent des informations sur votre système
|
||||
longcategory_=Modules qui ne vont pas dans les autres catégories
|
||||
longcategory_hardware=Modules pour les imprimantes, disques et autres configurations de matériel
|
||||
longcategory_system=Modules pour les utilisateurs, fichiers système, tâches Cron et autres paramètres du système
|
||||
longcategory_webmin=Modules pour configurer Webmin lui même
|
||||
longcategory_net=Modules pour la configuration de gestion du réseau et des services réseau
|
||||
longcategory_cluster=Modules permettant de contrôler de multiple serveurs à partir d'une seule interface
|
||||
longcategory_info=Modules qui affichent des informations sur votre système
|
||||
longcategory_=Modules qui ne vont pas dans les autres catégories
|
||||
|
||||
header_webmin=Index de Webmin
|
||||
header_module=Index du module
|
||||
@@ -41,17 +41,17 @@ index=index
|
||||
yes=Oui
|
||||
no=Non
|
||||
save=Sauvegarder
|
||||
create=Créer
|
||||
create=Créer
|
||||
delete=Supprimer
|
||||
find=Trouver
|
||||
error=Erreur
|
||||
error_previous=Page précédente
|
||||
efilewrite=Échec d'écriture sur $1 : $2
|
||||
efileclose=Échec d'écriture sur $1 lors de la fermeture : $2
|
||||
efileopen=Échec de l'ouverture $1 pour l'écriture : $2
|
||||
error_previous=Page précédente
|
||||
efilewrite=Échec d'écriture sur $1 : $2
|
||||
efileclose=Échec d'écriture sur $1 lors de la fermeture : $2
|
||||
efileopen=Échec de l'ouverture $1 pour l'écriture : $2
|
||||
default=Defaut
|
||||
modify=Modifier
|
||||
reset=Rétablir
|
||||
reset=Rétablir
|
||||
ok=OK
|
||||
cancel=Annuler
|
||||
helpsearch=Rechercher la documentation...
|
||||
@@ -64,108 +64,108 @@ chooser_dir=Dossier de $1
|
||||
chooser_ok=Ok
|
||||
chooser_date=Choisir la date
|
||||
|
||||
users_title1=Sélectionner les utilisateurs...
|
||||
users_title2=Sélectionner l'utilisateur...
|
||||
users_sel=Utilisateurs sélectionnés
|
||||
users_title1=Sélectionner les utilisateurs...
|
||||
users_title2=Sélectionner l'utilisateur...
|
||||
users_sel=Utilisateurs sélectionnés
|
||||
users_all=Tous les utilisateurs
|
||||
users_ok=Ok
|
||||
users_cancel=Annuler
|
||||
users_clear=Vider
|
||||
|
||||
groups_title1=Sélectionner les groupes...
|
||||
groups_title2=Sélectionner le groupe...
|
||||
groups_title1=Sélectionner les groupes...
|
||||
groups_title2=Sélectionner le groupe...
|
||||
groups_all=Tous les groupes
|
||||
groups_sel=Groupes sélectionnés
|
||||
groups_sel=Groupes sélectionnés
|
||||
groups_ok=Ok
|
||||
groups_cancel=Annuler
|
||||
groups_clear=Vider
|
||||
|
||||
modules_title1=Sélectionner les modules...
|
||||
modules_title2=Sélectionner le module...
|
||||
modules_sel=Modules sélectionnés
|
||||
modules_title1=Sélectionner les modules...
|
||||
modules_title2=Sélectionner le module...
|
||||
modules_sel=Modules sélectionnés
|
||||
modules_all=Tous les modules
|
||||
modules_ok=Ok
|
||||
modules_cancel=Annuler
|
||||
modules_clear=Vider
|
||||
|
||||
config_ecannot=Vous n'êtes pas autorisé à configurer ce module
|
||||
config_ecannot=Vous n'êtes pas autorisé à configurer ce module
|
||||
config_title=Configuration
|
||||
config_dir=Pour le module $1
|
||||
config_header=Options configurables pour $1
|
||||
config_none=Aucun
|
||||
config_eaccess=Vous n'êtes pas autorisé à accéder à ce module
|
||||
config_err=Échec de la sauvegarde des configurations
|
||||
config_eaccess=Vous n'êtes pas autorisé à accéder à ce module
|
||||
config_err=Échec de la sauvegarde des configurations
|
||||
config_nochange=Ne pas changer
|
||||
config_setto=Placer à
|
||||
config_ewebmin=Le type de paramètre 14 fonctionne uniquement dans Webmin
|
||||
config_setto=Placer à
|
||||
config_ewebmin=Le type de paramètre 14 fonctionne uniquement dans Webmin
|
||||
|
||||
help_err=Échec de l'affichage de l'aide
|
||||
help_err=Échec de l'affichage de l'aide
|
||||
help_epath=Chemin de destination de l'aide invalide ou manquant
|
||||
help_efile=Échec de lecture du fichier $1
|
||||
help_efile=Échec de lecture du fichier $1
|
||||
help_eheader=Section <header> manquante
|
||||
help_einclude=Échec de l'inclusion $1
|
||||
help_eif=$1 échec : $2
|
||||
help_eexec=$1 échec : $2
|
||||
help_einclude=Échec de l'inclusion $1
|
||||
help_eif=$1 échec : $2
|
||||
help_eexec=$1 échec : $2
|
||||
|
||||
referer_title=Avertissement de sécurité
|
||||
referer_warn=<b>Avertissement!</b> Webmin a détecté que le programme $2 a été relié à partir de l'adresse $1, il advient qu'elle se trouve en dehors du serveur Webmin. Ceci peut être une tentative de pieger votre serveur dans le but d'exécuter une commande dangereuse.
|
||||
referer_warn_unknown=<b>Avertissement!</b> Webmin a détecté que le programme $1 a été relié à partir d'une adresse inconnue, il advient qu'elle se trouve en dehors du serveur Webmin. Ceci peut être une tentative de pieger votre serveur dans le but d'exécuter une commande dangereuse.
|
||||
referer_ok=Continuer l'exécution du programme Webmin
|
||||
referer_title=Avertissement de sécurité
|
||||
referer_warn=<b>Avertissement!</b> Webmin a détecté que le programme $2 a été relié à partir de l'adresse $1, il advient qu'elle se trouve en dehors du serveur Webmin. Ceci peut être une tentative de pieger votre serveur dans le but d'exécuter une commande dangereuse.
|
||||
referer_warn_unknown=<b>Avertissement!</b> Webmin a détecté que le programme $1 a été relié à partir d'une adresse inconnue, il advient qu'elle se trouve en dehors du serveur Webmin. Ceci peut être une tentative de pieger votre serveur dans le but d'exécuter une commande dangereuse.
|
||||
referer_ok=Continuer l'exécution du programme Webmin
|
||||
referer_again=Ne plus afficher cette avertissement.
|
||||
|
||||
session_header=Se connecter à Webmin
|
||||
session_header=Se connecter à Webmin
|
||||
session_mesg=Vous devez entrer un nom d'utilisateur et un mot de passe pour vous identifier sur le serveur Webmin.
|
||||
session_mesg2=Vous devez entrer un nom d'utilisateur et un mot de passe pour vous identifier.
|
||||
session_user=Nom d'utilisateur
|
||||
session_pass=Mot de passe
|
||||
session_login=Login
|
||||
session_clear=Vider
|
||||
session_failed=Identification échouée. Réessayez s'il vous plaît.
|
||||
session_logout=Déconnecté avec succès. Utilisez le formulaire ci-dessous pour vous identifier une seconde fois.
|
||||
session_timed_out=La session a expirée après $1 minutes d'inactivité.
|
||||
session_save=Se souvenir de l'ouverture de manière permanente ?
|
||||
session_failed=Identification échouée. Réessayez s'il vous plaît.
|
||||
session_logout=Déconnecté avec succès. Utilisez le formulaire ci-dessous pour vous identifier une seconde fois.
|
||||
session_timed_out=La session a expirée après $1 minutes d'inactivité.
|
||||
session_save=Se souvenir de l'ouverture de manière permanente ?
|
||||
|
||||
pam_header=S'identifier à Webmin
|
||||
pam_mesg=Vous devez répondre à la question ci-dessous pour vous identifier au serveur Webmin sur $1.
|
||||
pam_mesg2=Vous devez répondre à la question ci-dessous pour vous identifier.
|
||||
pam_header=S'identifier à Webmin
|
||||
pam_mesg=Vous devez répondre à la question ci-dessous pour vous identifier au serveur Webmin sur $1.
|
||||
pam_mesg2=Vous devez répondre à la question ci-dessous pour vous identifier.
|
||||
pam_login=Continuer
|
||||
pam_restart=Redémarrer
|
||||
pam_restart=Redémarrer
|
||||
|
||||
acl_root=Répertoire racine pour le sélectionneur de fichiers
|
||||
acl_nodot=Cacher les fichiers dot dans le sélectionneur de fichiers?
|
||||
acl_home=Répertoire d'accueil de l'utilisateur
|
||||
acl_uedit=Utilisateurs visibles dans le sélectionneur des utilisateurs
|
||||
acl_root=Répertoire racine pour le sélectionneur de fichiers
|
||||
acl_nodot=Cacher les fichiers dot dans le sélectionneur de fichiers?
|
||||
acl_home=Répertoire d'accueil de l'utilisateur
|
||||
acl_uedit=Utilisateurs visibles dans le sélectionneur des utilisateurs
|
||||
acl_uedit_all=Tous les utilisateurs
|
||||
acl_uedit_none=Aucun utilisateurs
|
||||
acl_uedit_only=Seulement les utilisateurs
|
||||
acl_uedit_except=Tous sauf les utilisateurs
|
||||
acl_uedit_uid=Utilisateurs avec des UIDs dans la gamme
|
||||
acl_uedit_group=Utilisateurs présents dans un groupe
|
||||
acl_gedit=Groupes visibles dans le sélectionneur de groupe
|
||||
acl_uedit_group=Utilisateurs présents dans un groupe
|
||||
acl_gedit=Groupes visibles dans le sélectionneur de groupe
|
||||
acl_gedit_all=Tous les groupes
|
||||
acl_gedit_none=Aucun groupes
|
||||
acl_gedit_only=Seulement les groupes
|
||||
acl_gedit_except=Tous sauf les groupes
|
||||
acl_gedit_gid=Groupes avec des GIDs dans la gamme
|
||||
acl_feedback=Possibilité d'envoyer un email de rapport?
|
||||
acl_feedback=Possibilité d'envoyer un email de rapport?
|
||||
acl_feedback2=Oui
|
||||
acl_feedback1=Oui, mais pas avec les fichiers de configuration
|
||||
acl_feedback0=Non
|
||||
acl_feedback3=Oui, avec les fichiers de configuration
|
||||
acl_rpc=Possibilité d'accepter les appels RPC?
|
||||
acl_rpc=Possibilité d'accepter les appels RPC?
|
||||
acl_rpc2=Seulement pour <tt>root</tt> ou <tt>admin</tt>
|
||||
acl_rpc1=Oui
|
||||
acl_rpc0=Non
|
||||
acl_readonly=Utilisateur dans le mode demo?<br>(Certains modules ne seront pas disponibles)
|
||||
|
||||
month_1=Janvier
|
||||
month_2=Février
|
||||
month_2=Février
|
||||
month_3=Mars
|
||||
month_4=Avril
|
||||
month_5=Mai
|
||||
month_6=Juin
|
||||
month_7=Juillet
|
||||
month_8=Août
|
||||
month_8=Août
|
||||
month_9=Septembre
|
||||
month_10=Octobre
|
||||
month_11=Novembre
|
||||
@@ -200,53 +200,53 @@ sday_4=Je
|
||||
sday_5=Ve
|
||||
sday_6=Sa
|
||||
|
||||
emodule=Accès refusé : L'utilisateur $1 n'est pas autorisé à utiliser le module $2
|
||||
elock_tries=Échec du blocage du fichier $1 après $2 minutes
|
||||
emodule=Accès refusé : L'utilisateur $1 n'est pas autorisé à utiliser le module $2
|
||||
elock_tries=Échec du blocage du fichier $1 après $2 minutes
|
||||
|
||||
skill_high=Expert
|
||||
skill_medium=Intermédiaire
|
||||
skill_medium=Intermédiaire
|
||||
skill_low=Novice
|
||||
|
||||
feedback_title=Rapport Webmin
|
||||
feedback_desc=Ce formulaire vous permet de rapporter les bugs présents et de soumettre des suggestions aux développeurs de Webmin concernant n'importe quel problème ou des dispositifs manquants que vous avez trouvé. Lorsque vous cliquerez sur le boutton d'envoi, les détails contenus dans le formulaire seront envoyés par mail à $2.
|
||||
feedback_desc2=Ce rapport sera envoyé aux développeurs de Webmin, et non votre administrateur système, FAI ou votre fournisseur d'hébergement. Veuillez écrire en Anglais uniquement, même dans le cas où vous utilisez l'application sous un autre language.
|
||||
feedback_header=Détails du rapport
|
||||
feedback_desc=Ce formulaire vous permet de rapporter les bugs présents et de soumettre des suggestions aux développeurs de Webmin concernant n'importe quel problème ou des dispositifs manquants que vous avez trouvé. Lorsque vous cliquerez sur le boutton d'envoi, les détails contenus dans le formulaire seront envoyés par mail à $2.
|
||||
feedback_desc2=Ce rapport sera envoyé aux développeurs de Webmin, et non votre administrateur système, FAI ou votre fournisseur d'hébergement. Veuillez écrire en Anglais uniquement, même dans le cas où vous utilisez l'application sous un autre language.
|
||||
feedback_header=Détails du rapport
|
||||
feedback_name=Votre nom
|
||||
feedback_email=Votre adresse email
|
||||
feedback_module=Module concerné
|
||||
feedback_module=Module concerné
|
||||
feedback_all=Tous les modules
|
||||
feedback_text=Description du problème ou suggestion
|
||||
feedback_os=Inclure les détails de votre système d'exploitation dans l'email?
|
||||
feedback_osdesc=Si cette option est sélectionnée, l'email du rapport va inclure automatiquement le nom et la version de votre système d'exploitation.
|
||||
feedback_text=Description du problème ou suggestion
|
||||
feedback_os=Inclure les détails de votre système d'exploitation dans l'email?
|
||||
feedback_osdesc=Si cette option est sélectionnée, l'email du rapport va inclure automatiquement le nom et la version de votre système d'exploitation.
|
||||
feedback_config=Inclure la configuration du module dans l'email?
|
||||
feedback_configdesc=Si cette option est sélectionnée, l'email du rapport va inclure automatiquement la configuration du module concerné ainsi que le contenu de tous les fichiers de configuration que le module utilise. Par exemple, si le rapport concerne le module <i>Utilisateurs et Groupes</i>, vos fichiers <tt>/etc/passwd</tt> et <tt>/etc/shadow</tt> vont être envoyés.
|
||||
feedback_attach=Fichiers additionnels à joindre
|
||||
feedback_configdesc=Si cette option est sélectionnée, l'email du rapport va inclure automatiquement la configuration du module concerné ainsi que le contenu de tous les fichiers de configuration que le module utilise. Par exemple, si le rapport concerne le module <i>Utilisateurs et Groupes</i>, vos fichiers <tt>/etc/passwd</tt> et <tt>/etc/shadow</tt> vont être envoyés.
|
||||
feedback_attach=Fichiers additionnels à joindre
|
||||
feedback_send=Envoyer le rapport
|
||||
feedback_mailserver=Envoyer par le serveur SMTP
|
||||
feedback_mailserver_def=Programme d'envoi d'email local
|
||||
feedback_err=Échec de l'envoi du rapport
|
||||
feedback_err=Échec de l'envoi du rapport
|
||||
feedback_emodule=Vous avez choisi d'inclure vos configurations du module dans l'email, mais n'avez pas choisi de module.
|
||||
feedback_emodule2=Le module sélectionné n'existe pas.
|
||||
feedback_econfig=Vous n'avez pas un accès total au module sélectionné.
|
||||
feedback_via=Rapport envoyé à $1 par le serveur SMTP $2
|
||||
feedback_prog=Rapport envoyé à $1 en utilisant le programme d'envoi d'email $2
|
||||
feedback_esend=Échec de l'envoi du rapport par le programme d'envoi d'email ou du serveur SMTP local.
|
||||
feedback_to=Envoyer le rapport à des adresses
|
||||
feedback_enoto=Aucune adresse n'a été entrée pour envoyer le rapport
|
||||
feedback_ecannot=Vous n'êtes pas autorisé à envoyé un rapport
|
||||
feedback_ecannot2=Vous n'êtes pas autorisé à envoyé un rapport contenant des fichiers de configuration
|
||||
feedback_emodule2=Le module sélectionné n'existe pas.
|
||||
feedback_econfig=Vous n'avez pas un accès total au module sélectionné.
|
||||
feedback_via=Rapport envoyé à $1 par le serveur SMTP $2
|
||||
feedback_prog=Rapport envoyé à $1 en utilisant le programme d'envoi d'email $2
|
||||
feedback_esend=Échec de l'envoi du rapport par le programme d'envoi d'email ou du serveur SMTP local.
|
||||
feedback_to=Envoyer le rapport à des adresses
|
||||
feedback_enoto=Aucune adresse n'a été entrée pour envoyer le rapport
|
||||
feedback_ecannot=Vous n'êtes pas autorisé à envoyé un rapport
|
||||
feedback_ecannot2=Vous n'êtes pas autorisé à envoyé un rapport contenant des fichiers de configuration
|
||||
|
||||
progress_size=Téléchargement de $1 ($2 bytes) ..
|
||||
progress_nosize=Téléchargement de $1 ..
|
||||
progress_data=$1 bytes reçus ($2 %)
|
||||
progress_data2=$1 bytes reçus
|
||||
progress_done=.. téléchargement terminé.
|
||||
progress_size=Téléchargement de $1 ($2 bytes) ..
|
||||
progress_nosize=Téléchargement de $1 ..
|
||||
progress_data=$1 bytes reçus ($2 %)
|
||||
progress_data2=$1 bytes reçus
|
||||
progress_done=.. téléchargement terminé.
|
||||
|
||||
readparse_cdheader=Header de Contenu-Diposition manquant
|
||||
readparse_enc=Encodage de forme spécifique de données attendu, mais obtention d'un encode normal
|
||||
readparse_max=Les données onty excédées la taille maximum de $1 bytes
|
||||
readparse_enc=Encodage de forme spécifique de données attendu, mais obtention d'un encode normal
|
||||
readparse_max=Les données onty excédées la taille maximum de $1 bytes
|
||||
|
||||
password_expired=Votre mot de passe a expiré, et un nouveau doit être choisi.
|
||||
password_expired=Votre mot de passe a expiré, et un nouveau doit être choisi.
|
||||
password_header=Choisissez un nouveau mot de passe
|
||||
password_user=Nom d'utilisateurs
|
||||
password_old=Mot de passe actuel
|
||||
@@ -254,27 +254,27 @@ password_new1=Nouveau mot de passe
|
||||
password_new2=Nouveau mot de passe (confirmation)
|
||||
password_ok=Changer
|
||||
password_clear=Vider
|
||||
password_done=Votre mot de passe a été changé avec succès. Vous pouvez maintenant vous <a href='$1'>identifier une nouvelle fois</a> avec le nouveau mot de passe.
|
||||
password_err=Échec du changement du mot de passe.
|
||||
password_euser=Votre nom d'utiliateur n'a pas été trouvé dans le fichier des mots de passe!
|
||||
password_done=Votre mot de passe a été changé avec succès. Vous pouvez maintenant vous <a href='$1'>identifier une nouvelle fois</a> avec le nouveau mot de passe.
|
||||
password_err=Échec du changement du mot de passe.
|
||||
password_euser=Votre nom d'utiliateur n'a pas été trouvé dans le fichier des mots de passe!
|
||||
password_eold=Le mot de passe actuel est invalide
|
||||
password_enew1=Aucun nouveau mot de passe n'a été saisi
|
||||
password_enew1=Aucun nouveau mot de passe n'a été saisi
|
||||
password_enew2=Les saisies de votre nouveau mot de passe ne correspondent pas
|
||||
password_epam=Erreur PAM : $1
|
||||
password_emodpam=The Authen::Le module PAM perl requis pour réaliser les changements de mot de passe n'est pas installé!
|
||||
password_emodpam=The Authen::Le module PAM perl requis pour réaliser les changements de mot de passe n'est pas installé!
|
||||
|
||||
ui_mandatory=Ce champs est obligatoire
|
||||
ui_checkmandatory=Rien n'a été sélectionné
|
||||
ui_errors=Plusieurs erreurs ont été détectées :
|
||||
ui_checkmandatory=Rien n'a été sélectionné
|
||||
ui_errors=Plusieurs erreurs ont été détectées :
|
||||
ui_nothing=Rien de saisie
|
||||
ui_searchcol=Il y a des rangées où
|
||||
ui_searchcol=Il y a des rangées où
|
||||
ui_searchfor=Contient le texte
|
||||
ui_searchok=Rechercher
|
||||
ui_selall=Selectionner tout.
|
||||
ui_selinv=Inverser la sélection.
|
||||
ui_selinv=Inverser la sélection.
|
||||
ui_edate=Date invalide
|
||||
ui_etime=Heure invalide
|
||||
ui_paging=Affichage des rangées $1 à $2 de $3
|
||||
ui_rowlabel=$2 dans la rangée $1 :
|
||||
ui_paging=Affichage des rangées $1 à $2 de $3
|
||||
ui_rowlabel=$2 dans la rangée $1 :
|
||||
|
||||
header_statusmsg=$1 identifié dans $2 $3 sur $4 ($5)
|
||||
header_statusmsg=$1 identifié dans $2 $3 sur $4 ($5)
|
||||
|
||||
@@ -203,12 +203,14 @@ sdelete_edel=LDAP löschen von $1 fehlgeschlagen : $2
|
||||
sdelete_edn=Objekt $1 wurde nicht gefunden
|
||||
sdelete_err=Fehlgeschlagen Objekte zu löschen
|
||||
slapd_allow=Zugriffskontrolle Optionen
|
||||
slapd_bind_anon_cred=Erlaube anonymen Login mit Zugangsdaten
|
||||
slapd_bind_anon_dn=Erlaube anonyme Anmeldung mit DN
|
||||
slapd_bind_v2=Erlaube LDAP v2 Clients
|
||||
slapd_ca=TLS CA-Zertifikatsdatei
|
||||
slapd_cachesize=Index zum Cachen
|
||||
slapd_cert=TLS-Zertifikat-Datei
|
||||
slapd_dbcachesize=Datenbankeinträge zum Zwischenspeichern
|
||||
slapd_eca=Fehlende oder falsch formatierte TLS-CA-Zertifikatdatei
|
||||
slapd_ecachesize=Fehlende oder nicht-numerische Index-Cache-Größe
|
||||
slapd_ecannot=Es ist Ihnen nicht erlaubt den LDAP-Server zu konfigurieren
|
||||
slapd_ecert=Fehlende oder falsch formatierte TLS-Zertifikats-Datei
|
||||
|
||||
@@ -3,3 +3,4 @@ longdesc=Manage the OpenLDAP server and objects in its database
|
||||
category=servers
|
||||
depends=ldap-client
|
||||
perldepends=Net::LDAP
|
||||
desc_de=LDAP Server
|
||||
|
||||
@@ -26,7 +26,7 @@ index_emd5=Dieses Modul ist <a href='$1'>konfiguriert</a> um MD5-Passwortverschl
|
||||
index_eperl=Das Perl Module $1 das benötigt wird ist nicht installiert oder funktioniert nicht korrekt.
|
||||
index_eperl2=Die Fehlermeldung von Perl beim Laden des Modules war :
|
||||
index_eschema=Webmin ist mit dem LDAP Server verbunden, konnte jedoch nicht das Schema holen. Stellen Sie sicher, dass der Zugriff nicht im <a href='$1'>LDAP Server</a> Module verweigert wird.
|
||||
index_eslappasswd=Dieses Modul ist <a href='$1'>konfiguriert</a> um MD5-Passwortverschlüsselung zu benutzen, aber das Programm <tt>$2</tt> das für die Verschlüsselung benutzt wird ist nicht installiert.
|
||||
index_eslappasswd=Dieses Modul ist <a href='$1'>konfiguriert</a> um LDAP MD5-Passwortverschlüsselung zu benutzen, aber das Programm <tt>$2</tt> das für die Verschlüsselung benutzt wird ist nicht installiert.
|
||||
index_eusearch=Suche nach Benutzern unter $1 fehlgeschlagen: $2
|
||||
index_gadd=Eine neue LDAP-Gruppe hinzufügen.
|
||||
index_gnone=Es wurde keine LDAP-Gruppe unter $1 gefunden.
|
||||
@@ -61,7 +61,7 @@ uedit_raw=LDAP-Attribute
|
||||
uedit_return=Benutzer-Details
|
||||
uedit_samba=Samba Login?
|
||||
uedit_sambaacctflags=Konto-Flags
|
||||
uedit_sambabadpasswordcount=Anzahl ungültige Passwörter
|
||||
uedit_sambabadpasswordcount=Anzahl ungültige Passwörter
|
||||
uedit_sambapassopts=Samba Passwort Optionen
|
||||
uedit_sambapwdcanchange=Passwort kann geändert werden
|
||||
uedit_sambapwdlastset=Letztes Passwort Update
|
||||
|
||||
@@ -16,6 +16,9 @@ index_addlv3=Crea un pool prim a <tt>$1</tt>.
|
||||
index_addlv=Crea un nou volum lògic.
|
||||
index_addsnap=Crea una nova instantània.
|
||||
index_return=als grups de volums
|
||||
index_return2=als volums físics
|
||||
index_return3=als volums lògics
|
||||
|
||||
index_init=Això pot ser perquè encara no has activat LVM. <a href='$1'>Activa'l ara</a> per veure tots els grups de volums.
|
||||
index_eversion=Webmin només suporta les versions LVM 1.0 superiors. La sortida de $1 al sistema és: $2
|
||||
index_version=LVM versió $1
|
||||
|
||||
@@ -152,9 +152,6 @@ elsif ($in{'razor'} || $in{'ham'}) {
|
||||
else {
|
||||
print "<b>$text{'razor_done'}</b><p>\n";
|
||||
}
|
||||
print "<script>\n";
|
||||
print "window.location = 'list_mail.cgi?folder=$in{'folder'}&user=$in{'user'}';\n";
|
||||
print "</script>\n";
|
||||
}
|
||||
&ui_print_footer("list_mail.cgi?folder=$in{'folder'}&user=$in{'user'}&dom=$in{'dom'}", $text{'mail_return'}, &user_list_link(), $text{'index_return'});
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ if ($< == 0) {
|
||||
$size = int(`du -sk $tmp_dir`);
|
||||
|
||||
# Create the control file
|
||||
@deps = ( "perl", "libnet-ssleay-perl", "openssl", "libauthen-pam-perl", "libpam-runtime", "libio-pty-perl", "apt-show-versions" );
|
||||
@deps = ( "perl", "libnet-ssleay-perl", "openssl", "libauthen-pam-perl", "libpam-runtime", "libio-pty-perl", "apt-show-versions", "unzip", "shared-mime-info" );
|
||||
if ($baseproduct eq "webmin") {
|
||||
push(@deps, "python");
|
||||
}
|
||||
|
||||
@@ -15,9 +15,9 @@ $zipdir = "zips";
|
||||
@files = ("config.cgi", "config-*-linux",
|
||||
"config-solaris", "images", "index.cgi", "mime.types",
|
||||
"miniserv.pl", "os_list.txt", "perlpath.pl", "setup.sh", "setup.pl", "setup.bat",
|
||||
"version", "web-lib.pl", "web-lib-funcs.pl", "README",
|
||||
"version", "web-lib.pl", "web-lib-funcs.pl",
|
||||
"config_save.cgi", "chooser.cgi", "miniserv.pem",
|
||||
"config-aix", "update-from-repo.sh",
|
||||
"config-aix", "update-from-repo.sh", "README.md",
|
||||
"newmods.pl", "copyconfig.pl", "config-hpux", "config-freebsd",
|
||||
"changepass.pl", "help.cgi", "user_chooser.cgi",
|
||||
"group_chooser.cgi", "config-irix", "config-osf1", "thirdparty.pl",
|
||||
|
||||
@@ -74,7 +74,7 @@ Version: $ver
|
||||
Release: $rel
|
||||
Provides: %{name}-%{version} perl(WebminCore)
|
||||
PreReq: /bin/sh /usr/bin/perl /bin/rm
|
||||
Requires: /bin/sh /usr/bin/perl /bin/rm perl(Net::SSLeay) perl(Time::Local) perl(Encode::Detect) perl(Data::Dumper) openssl
|
||||
Requires: /bin/sh /usr/bin/perl /bin/rm perl(Net::SSLeay) perl(Time::Local) perl(Encode::Detect) perl(Data::Dumper) openssl unzip
|
||||
AutoReq: 0
|
||||
License: Freeware
|
||||
Group: System/Tools
|
||||
|
||||
@@ -1451,6 +1451,11 @@ while(1) {
|
||||
# for logging unless trust_real_ip is set
|
||||
local $headerhost = $header{'x-forwarded-for'} ||
|
||||
$header{'x-real-ip'};
|
||||
if ($headerhost) {
|
||||
# Only real IPs are allowed
|
||||
$headerhost = undef if (!&check_ipaddress($headerhost) &&
|
||||
!&check_ip6address($headerhost));
|
||||
}
|
||||
if ($config{'trust_real_ip'}) {
|
||||
$acpthost = $headerhost || $acpthost;
|
||||
if (&check_ipaddress($headerhost) || &check_ip6address($headerhost)) {
|
||||
|
||||
@@ -5,6 +5,7 @@ long_fstypes=Utilitza tipus llargs de sistemes de fitxers,1,1-S
|
||||
sort_mode=Ordena els sistemes de fitxers per,1,2-Punt de Muntatge,1-Tipus,0-Ordre en els fitxers
|
||||
show_used=Mostra l'espai en disc utilitzat a les llistes de sistemes de fitxers,1,1-Sí,0-No
|
||||
delete_under=Suprimeix el directori en desmuntar, si queda per sota,3,No el suprimeixis mai
|
||||
sysinfo=Mostra les dades de disc disponibles al Tauler,1,1-Sí,0-No
|
||||
line2=Configuració del sistema,11
|
||||
fstab_file=Fitxer que llista els sistemes de fitxers muntats en engegar el sistema,0
|
||||
auto_file=Fitxer de muntatges automàtics NFS,3
|
||||
|
||||
@@ -495,4 +495,9 @@ freebsd_edevfile=El fitxer de dispositiu '$1' no existeix
|
||||
cswap_file=El fitxer d'intercanvi $1 no existeix.
|
||||
cswap_size=Crea i munta un fitxer d'intercanvi de mida
|
||||
|
||||
|
||||
acl_sysinfo=Mostra les dades disponibles en disc al Tauler
|
||||
sysinfo_total=Total
|
||||
sysinfo_dev=ID de dispositiu
|
||||
|
||||
__norefs=1
|
||||
|
||||
@@ -306,10 +306,12 @@ my %donedevno;
|
||||
# Get list of zone pools
|
||||
my %zpools = ( 'zones' => 1, 'zroot' => 1 );
|
||||
if (&has_command("zpool")) {
|
||||
my @out = &backquote_command("zpool list -P 2>/dev/null || zpool list -p 2>/dev/null");
|
||||
foreach my $l (@out) {
|
||||
if (/^(\S+)\s+(\d+)\s+(\d+)\s+(\d+)/) {
|
||||
$zpools{$1} = [ $2 / 1024, $4 / 1024 ];
|
||||
foreach my $flag ("-P", "-p") {
|
||||
my @out = &backquote_command("zpool list $flag 2>/dev/null");
|
||||
foreach my $l (@out) {
|
||||
if (/^(\S+)\s+(\d+)\s+(\d+)\s+(\d+)/) {
|
||||
$zpools{$1} = [ $2 / 1024, $4 / 1024 ];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,11 +21,12 @@ sub list_system_info
|
||||
foreach my $disks (@disk_space) {
|
||||
if (ref($disks)) {
|
||||
foreach my $disk (@$disks) {
|
||||
my $total = $disk->{'total'};
|
||||
next if (!$total);
|
||||
my $dev_id = $disk->{'device'};
|
||||
my $dir = $disk->{'dir'};
|
||||
my $type = $disk->{'type'};
|
||||
my $total = $disk->{'total'};
|
||||
my $total_nice = nice_size($disk->{'total'});
|
||||
my $total_nice = nice_size($total);
|
||||
my $free = $disk->{'free'};
|
||||
my $free_nice = nice_size($disk->{'free'});
|
||||
my $free_percent = 100 - int(($total - $free) / $total * 100);
|
||||
|
||||
@@ -605,6 +605,9 @@ backup_header2=Altres opcions de c
|
||||
backup_header3=Planificació de la còpia
|
||||
backup_file=Aboca al fitxer
|
||||
backup_file2=Aboca al directori
|
||||
backup_prefix=Prefix de nom de fitxer
|
||||
backup_eprefix=El prefix del nom de fitxer no pot contenir /
|
||||
backup_noprefix=Cap
|
||||
backup_download=Descarrega-ho al navegador
|
||||
backup_path=Caní al servidor
|
||||
backup_mkdir=Crea el directori destí
|
||||
@@ -740,6 +743,8 @@ cnf_emyisam_sort_buffer_size=Hi falta la mida del buffer d'ordenaci
|
||||
cnf_emax_connections=Hi falta el nombre màxim de connexions o bé és invàlid
|
||||
cnf_restart=Desa-ho i Reinicia MySQL
|
||||
cnf_fpt=Un fitxer separat per a cada taula InnoDB
|
||||
cnf_ilt=Temps límit de blocatge InnoDB (en segons)
|
||||
cnf_eilt=El temps límit de blocatge InnoDB ha de ser un enter
|
||||
|
||||
manual_title=Edició de Fitxers de Configuració
|
||||
manual_file=Edita el fitxer de configuració:
|
||||
|
||||
@@ -64,6 +64,7 @@ backup_efile2=Fehlendes oder ungültiges Backup-Verzeichnis
|
||||
backup_eisdir=Sicherungsziel $1 ist ein Verzeichnis
|
||||
backup_email=Verschicke Backup Status E-Mail an
|
||||
backup_epath=Ungültiger Sicherungspfad
|
||||
backup_eprefix=Dateinamenpräfix darf nicht enthalten /
|
||||
backup_err=Datenbanksicherung fehlgeschlagen
|
||||
backup_etables=Keine Tabellen zum Backup ausgewählt
|
||||
backup_eunder=Datensicherungen dürfen nur unter $1 erstellt werden
|
||||
@@ -77,6 +78,7 @@ backup_header3=Backup-Zeitplan
|
||||
backup_mkdir=Erstelle Zielverzeichnis?
|
||||
backup_ncron=Sicherungsauftrag für die Datenbank weiterhin deaktiviert.
|
||||
backup_none=Alle Zeilen
|
||||
backup_noprefix=Kein
|
||||
backup_notify=Sende E-Mail für
|
||||
backup_notify0=Alle Backups
|
||||
backup_notify1=Nur bei Fehler
|
||||
@@ -86,6 +88,7 @@ backup_ok1=Speichern und jetzt Datensicherung durchführen
|
||||
backup_ok2=Speichern
|
||||
backup_options=Strukturinformationen zu ausschließen
|
||||
backup_path=Pfad auf Server
|
||||
backup_prefix=Dateinamenpräfix
|
||||
backup_quick=Dump Zeilen eins nach dem anderen?
|
||||
backup_sched=Sicherungsauftrag aktivieren?
|
||||
backup_sched1=Ja, zu den unten gewählten Zeitpunkten ..
|
||||
|
||||
@@ -6,3 +6,5 @@ longdesc=Setup databases, tables and permissions in your MySQL database server.
|
||||
readonly=1
|
||||
syslog=1
|
||||
cpan=1
|
||||
longdesc_de=Richtet Datenbanken, Tabellen und Berechtigungen in Ihrem MySQL-Datenbankserver ein.
|
||||
desc_de=MySQL-Datenbankserver
|
||||
|
||||
@@ -1118,6 +1118,7 @@ foreach (@$lref) {
|
||||
elsif (/^\s*\!includedir\s+(\S+)/) {
|
||||
# Including sections from files in a directory
|
||||
my $dir = $1;
|
||||
$dir =~ s/\/$//;
|
||||
opendir(DIR, $dir);
|
||||
my @files = map { $dir."/".$_ } readdir(DIR);
|
||||
closedir(DIR);
|
||||
|
||||
@@ -12,7 +12,7 @@ if ($in{'save'} || !@d) {
|
||||
foreach $v (keys %in) {
|
||||
if ($v =~ /^value_(\S+)$/) {
|
||||
&execute_sql_logged($master_db,
|
||||
"set global $1 = $in{$v}");
|
||||
"set global $1 = '$in{$v}'");
|
||||
$first ||= $1;
|
||||
$count++;
|
||||
}
|
||||
|
||||
@@ -77,3 +77,5 @@ Added support for IPv6, DHCP and new ethernet device names on FreeBSD.
|
||||
Added support for configuring intefaces with the "ip" command, as seen on RHEL 7, CentOS 7 and other new Linux distributions.
|
||||
---- Changes since 1.760 ----
|
||||
On CentOS, Fedora and Redhat systems, the DNSn lines in ifcfg-* files are now updated in sync with resolv.conf.
|
||||
---- Changes since 1.910 ----
|
||||
Added an option to disable (comment out) hosts file entries.
|
||||
|
||||
@@ -7,6 +7,7 @@ $access{'hosts'} == 2 || &error($text{'hosts_ecannot'});
|
||||
&ReadParse();
|
||||
if ($in{'new'}) {
|
||||
&ui_print_header(undef, $text{'hosts_create'}, "");
|
||||
$h = { 'active' => 1 };
|
||||
}
|
||||
else {
|
||||
&ui_print_header(undef, $text{'hosts_edit'}, "");
|
||||
@@ -20,6 +21,10 @@ print &ui_hidden("new", $in{'new'});
|
||||
print &ui_hidden("idx", $in{'idx'});
|
||||
print &ui_table_start($text{'hosts_detail'}, undef, 2);
|
||||
|
||||
# Active?
|
||||
print &ui_table_row($text{'hosts_active'},
|
||||
&ui_yesno_radio("active", $h->{'active'}));
|
||||
|
||||
# IP address
|
||||
print &ui_table_row($text{'hosts_ip'},
|
||||
&ui_textbox("address", $h->{'address'}, 30));
|
||||
|
||||
@@ -221,6 +221,7 @@ dns_hoststoo=Update hostname in host addresses if changed?
|
||||
dns_dhcp=Hostname is set by DHCP server?
|
||||
|
||||
hosts_title=Host Addresses
|
||||
hosts_active=Enabled?
|
||||
hosts_ip=IP Address
|
||||
hosts_host=Hostnames
|
||||
hosts_add=Add a new host address.
|
||||
|
||||
@@ -26,13 +26,13 @@ if (&has_command("ip")) {
|
||||
$l =~ /^\d+:\s+([^ \t\r\n\@]+):/ || next;
|
||||
$ifc{'name'} = $1;
|
||||
$ifc{'fullname'} = $1;
|
||||
if ($l =~ /\sinet\s+([0-9\.]+)\s+peer\s+([0-9\.]+)\/(\d+)(\s+brd\s+([0-9\.]+))?\s+scope\s+global\s+(\S+)/ && $6 eq $ifc{'name'}) {
|
||||
if ($l =~ /\sinet\s+([0-9\.]+)\s+peer\s+([0-9\.]+)\/(\d+)(\s+brd\s+([0-9\.]+))?\s+scope\s+global(\s+noprefixroute)?(\s+dynamic)?\s+(\S+)/ && $8 eq $ifc{'name'}) {
|
||||
# Line like :
|
||||
# inet 193.9.101.120 peer 193.9.101.104/32 brd 193.9.101.120 scope global eth0
|
||||
$ifc{'address'} = $1;
|
||||
$ifc{'netmask'} = &prefix_to_mask("$3");
|
||||
}
|
||||
elsif ($l =~ /\sinet\s+([0-9\.]+)\/(\d+)(\s+brd\s+(\S+))?\s+scope\s+global\s+(\S+)/ && $5 eq $ifc{'name'}) {
|
||||
elsif ($l =~ /\sinet\s+([0-9\.]+)\/(\d+)(\s+brd\s+(\S+))?\s+scope\s+global(\s+noprefixroute)?(\s+dynamic)?\s+(\S+)/ && $7 eq $ifc{'name'}) {
|
||||
# Line like :
|
||||
# inet 193.9.101.120/24 brd 193.9.101.255 scope global br0
|
||||
$ifc{'address'} = $1;
|
||||
@@ -44,6 +44,12 @@ if (&has_command("ip")) {
|
||||
$ifc{'address'} = $1;
|
||||
$ifc{'netmask'} = &prefix_to_mask("$3");
|
||||
}
|
||||
elsif ($l =~ /\sinet\s+([0-9\.]+)\/(\d+)(\s+brd\s+(\S+))?\s+scope\s+host\s+(\S+)/ && $5 eq $ifc{'name'}) {
|
||||
# Line like :
|
||||
# inet 127.0.0.1/8 scope host lo
|
||||
$ifc{'address'} = $1;
|
||||
$ifc{'netmask'} = &prefix_to_mask("$2");
|
||||
}
|
||||
if ($l =~ /\sbrd\s+([0-9\.]+)/) {
|
||||
$ifc{'broadcast'} = $1;
|
||||
}
|
||||
|
||||
@@ -16,16 +16,21 @@ if ($access{'hosts'} == 2) {
|
||||
}
|
||||
print &ui_columns_start([ $access{'hosts'} == 2 ? ( "" ) : ( ),
|
||||
$text{'hosts_ip'},
|
||||
$text{'hosts_active'},
|
||||
$text{'hosts_host'} ], undef, 0, \@tds);
|
||||
foreach $h (&list_hosts()) {
|
||||
local @cols;
|
||||
local $lnk;
|
||||
if ($access{'hosts'} == 2) {
|
||||
push(@cols, "<a href=\"edit_host.cgi?idx=$h->{'index'}\">".
|
||||
&html_escape($h->{'address'})."</a>");
|
||||
$lnk = &ui_link("edit_host.cgi?idx=$h->{'index'}",
|
||||
&html_escape($h->{'address'}));
|
||||
}
|
||||
else {
|
||||
push(@cols, &html_escape($h->{'address'}));
|
||||
$lnk = &html_escape($h->{'address'});
|
||||
}
|
||||
push(@cols, $lnk);
|
||||
push(@cols, $h->{'active'} ? $text{'yes'}
|
||||
: "<font color=red>$text{'no'}</font>");
|
||||
push(@cols, join(" , ", map { &html_escape($_) }
|
||||
@{$h->{'hosts'}}));
|
||||
if ($access{'hosts'} == 2) {
|
||||
|
||||
@@ -39,14 +39,19 @@ local $line="";
|
||||
|
||||
&open_readfile(HOSTS, $config{'hosts_file'});
|
||||
while($line=<HOSTS>) {
|
||||
local $comment = 0;
|
||||
$line =~ s/\r|\n//g;
|
||||
if ($line =~ s/^\s*#+\s*//) {
|
||||
$comment = 1;
|
||||
}
|
||||
$line =~ s/#.*$//g;
|
||||
$line =~ s/\s+$//g;
|
||||
local(@f)=split(/\s+/, $line);
|
||||
local($ipaddr)=shift(@f);
|
||||
local @f = split(/\s+/, $line);
|
||||
local $ipaddr = shift(@f);
|
||||
if (check_ipaddress_any($ipaddr)) {
|
||||
push(@rv, { 'address' => $ipaddr,
|
||||
'hosts' => [ @f ],
|
||||
'active' => !$comment,
|
||||
'line', $lnum,
|
||||
'index', scalar(@rv) });
|
||||
}
|
||||
@@ -56,12 +61,22 @@ close(HOSTS);
|
||||
return @rv;
|
||||
}
|
||||
|
||||
# make_host_line(&host)
|
||||
# Internal function to return a line for the hosts file
|
||||
sub make_host_line
|
||||
{
|
||||
local ($host) = @_;
|
||||
return ($host->{'active'} ? "" : "# ").
|
||||
$host->{'address'}."\t".join(" ",@{$host->{'hosts'}})."\n";
|
||||
}
|
||||
|
||||
# create_host(&host)
|
||||
# Add a new host to /etc/hosts
|
||||
sub create_host
|
||||
{
|
||||
local ($host) = @_;
|
||||
&open_tempfile(HOSTS, ">>$config{'hosts_file'}");
|
||||
&print_tempfile(HOSTS, $_[0]->{'address'},"\t",join(" ",@{$_[0]->{'hosts'}}),"\n");
|
||||
&print_tempfile(HOSTS, &make_host_line($host));
|
||||
&close_tempfile(HOSTS);
|
||||
}
|
||||
|
||||
@@ -69,16 +84,17 @@ sub create_host
|
||||
# Update the address and hosts of a line in /etc/hosts
|
||||
sub modify_host
|
||||
{
|
||||
local ($host) = @_;
|
||||
&replace_file_line($config{'hosts_file'},
|
||||
$_[0]->{'line'},
|
||||
$_[0]->{'address'}."\t".join(" ",@{$_[0]->{'hosts'}})."\n");
|
||||
$_[0]->{'line'}, &make_host_line($host));
|
||||
}
|
||||
|
||||
# delete_host(&host)
|
||||
# Delete a host from /etc/hosts
|
||||
sub delete_host
|
||||
{
|
||||
&replace_file_line($config{'hosts_file'}, $_[0]->{'line'});
|
||||
local ($host) = @_;
|
||||
&replace_file_line($config{'hosts_file'}, $host->{'line'});
|
||||
}
|
||||
|
||||
# list_ipnodes()
|
||||
|
||||
@@ -231,14 +231,25 @@ else {
|
||||
&unlock_file($old->{'file'});
|
||||
}
|
||||
else {
|
||||
# Adding a new one (to it's own file)
|
||||
# Adding a new one (possibly to it's own file)
|
||||
$iface->{'file'} = $netplan_dir."/".$iface->{'name'}.".yaml";
|
||||
@lines = ( "network:",
|
||||
" ethernets:",
|
||||
@lines );
|
||||
&lock_file($iface->{'file'});
|
||||
my $lref = &read_file_lines($iface->{'file'});
|
||||
push(@$lref, @lines);
|
||||
my $nline = -1;
|
||||
my $eline = -1;
|
||||
for(my $i=0; $i<@$lref; $i++) {
|
||||
$nline = $i if ($lref->[$i] =~ /^\s*network:/);
|
||||
$eline = $i if ($lref->[$i] =~ /^\s*ethernets:/);
|
||||
}
|
||||
if ($nline < 0) {
|
||||
$nline = scalar(@$lref);
|
||||
push(@$lref, "network:");
|
||||
}
|
||||
if ($eline < 0) {
|
||||
$eline = $nline + 1;
|
||||
splice(@$lref, $nline+1, 0, " ethernets:");
|
||||
}
|
||||
splice(@$lref, $eline+1, 0, @lines);
|
||||
&flush_file_lines($iface->{'file'});
|
||||
&unlock_file($iface->{'file'});
|
||||
}
|
||||
|
||||
@@ -59,7 +59,8 @@ else {
|
||||
&can_create_iface() || &error($text{'ifcs_ecannot'});
|
||||
&can_iface($b) || &error($text{'ifcs_ecannot'});
|
||||
}
|
||||
elsif ($in{'name'} =~ /^([a-z]+\d*(s\d*)?(\.\d+)?):(\d+)$/) {
|
||||
elsif ($in{'name'} =~ /^([a-z]+\d*(s\d*)?(\.\d+)?):(\d+)$/ ||
|
||||
$in{'name'} =~ /^(en[0-9a-z]+(s\d*)?(\.\d+)?):(\d+)$/) {
|
||||
# also creating a virtual interface
|
||||
foreach $eb (@boot) {
|
||||
if ($eb->{'name'} eq $2 &&
|
||||
@@ -85,7 +86,8 @@ else {
|
||||
$b->{'name'} = $b->{'fullname'} = "bond".$in{'name'};
|
||||
$b->{'bond'} = 1;
|
||||
}
|
||||
elsif ($in{'name'} =~/^[a-z]+\d*(s\d*)?(\.\d+)?$/) {
|
||||
elsif ($in{'name'} =~ /^[a-z]+\d*(s\d*)?(\.\d+)?$/ ||
|
||||
$in{'name'} =~ /^en[0-9a-z]+(s\d*)?(\.\d+)?$/) {
|
||||
# creating a real interface
|
||||
$b->{'name'} = $in{'name'};
|
||||
$b->{'fullname'} = $in{'name'};
|
||||
|
||||
@@ -26,7 +26,8 @@ else {
|
||||
if ($in{'new'}) {
|
||||
# saving a host
|
||||
$host = { 'address' => $in{'address'},
|
||||
'hosts' => \@h };
|
||||
'hosts' => \@h,
|
||||
'active' => $in{'active'} };
|
||||
&create_host($host);
|
||||
}
|
||||
else {
|
||||
@@ -34,6 +35,7 @@ else {
|
||||
$host = $hosts[$in{'idx'}];
|
||||
$host->{'address'} = $in{'address'};
|
||||
$host->{'hosts'} = \@h;
|
||||
$host->{'active'} = $in{'active'};
|
||||
&modify_host($host);
|
||||
}
|
||||
}
|
||||
|
||||
0
package-updates/create_repo.cgi
Normal file → Executable file
0
package-updates/create_repo.cgi
Normal file → Executable file
@@ -45,6 +45,18 @@ index_manynew=Hi ha $1 paquets disponibles per a instal
|
||||
index_search=Busca paquets que coincideixin amb:
|
||||
index_searchok=Busca
|
||||
index_clear=Mostra'ls Tots
|
||||
index_tabpkgs=Actualitzacions de Paquets
|
||||
index_tabscheds=Actualitzacions Planificades
|
||||
index_tabsrepos=Repositoris de Paquets
|
||||
index_scheddesc=Aquest formulari es pot utilitzar per instal·lar automàticament actualitzacions de paquets de forma periòdica.
|
||||
index_reposdesc=Aquesta pàgina et permet de configurar quins repositoris s'utilitzarant per als paquets nous o actualitzats.
|
||||
index_reposname=Nom del repositori
|
||||
index_reposenabled=Activat
|
||||
index_reposurl=URL del Paquet
|
||||
index_reposdisable=Desactiva els Repositoris
|
||||
index_reposenable=Activa els Repositoris
|
||||
index_reposdelete=Suprimeix els Repositoris
|
||||
index_repoheader=Opcions del nou repositori de paquets
|
||||
|
||||
update_title=Actualització de Paquets
|
||||
update_title2=Instal·lació de Paquets
|
||||
@@ -91,6 +103,13 @@ log_update=S'han instal
|
||||
log_sched=S'han activat les actualitzacions periòdiques
|
||||
log_unsched=S'han desactivat les actualitzacions periòdiques
|
||||
log_refresh=S'han refrescat els paquets disponibles
|
||||
log_enable_repos=S'han activat $1 repositoris de paquets
|
||||
log_disable_repos=S'han desactivat $1 repositoris de paquets
|
||||
log_delete_repos=S'han suprimit $1 repositoris de paquets
|
||||
log_enable_repo=S'ha activat el repositori de paquets $1
|
||||
log_disable_repo=S'ha desactivat el repositori de paquets $1
|
||||
log_delete_repo=S'ha suprimit el repositori de paquets $1
|
||||
log_create_repo=S'ha creat el repositori de paquets $1
|
||||
|
||||
refresh_title=Refresc de Paquets
|
||||
refresh_clearing=S'estan buidant els caus del paquet...
|
||||
@@ -118,4 +137,15 @@ system_csw=CSW (Blastwave)
|
||||
system_webmin=Mòdul de Webmin
|
||||
system_usermin=Mòdul d'Usermin
|
||||
system_tgz=tar.gz de Webmin o Usermin
|
||||
|
||||
repos_err_disable=No s'han pogut desactivar els repositories
|
||||
repos_err_enable=No s'han pogut activar els repositories
|
||||
repos_err_delete=No s'han pogut suprimir els repositories
|
||||
repos_err_create=No s'ha pogut crear el repositori
|
||||
repos_ebutton=No has fet clic a cap botó!
|
||||
repos_enone=No n'has seleccionat cap
|
||||
repos_title=Supressió de Repositoris
|
||||
> repos_rusure=Segur que vols suprimir els $1 repositoris de paquets seleccionats? Els paquets instal·lats d'aquests repositoris encara estaran disponibles, però potser no es podran actualitzar.
|
||||
repos_ok=Suprimeix-los Ara
|
||||
|
||||
__norefs=1
|
||||
|
||||
@@ -60,6 +60,7 @@ index_repoheader=New package repository options
|
||||
|
||||
update_title=Update Packages
|
||||
update_title2=Install Packages
|
||||
update_enone=No packages selected
|
||||
update_pkg=Now updating $1 ..
|
||||
update_pkg2=Now installing $1 ..
|
||||
update_done=Installed package $1 $2.
|
||||
|
||||
@@ -682,6 +682,48 @@ sub check_reboot_required
|
||||
if ($gconfig{'os_type'} eq 'debian-linux') {
|
||||
return -e "/var/run/reboot-required" ? 1 : 0;
|
||||
}
|
||||
elsif ($gconfig{'os_type'} eq 'redhat-linux') {
|
||||
my $needs_restarting = has_command("needs-restarting");
|
||||
my $needs_restarting_correct = 0;
|
||||
if ($needs_restarting) {
|
||||
($needs_restarting_correct) = `needs-restarting -h` =~ /reboothint/;
|
||||
}
|
||||
if ($needs_restarting && $needs_restarting_correct) {
|
||||
my $ex = &execute_command(
|
||||
"needs-restarting -r", undef, undef, undef, 0, 1);
|
||||
return $ex ? 1 : 0;
|
||||
}
|
||||
else {
|
||||
my ($new_kernel_install_time, $last_reboot_time, $new_kernel, $cur_kernel);
|
||||
|
||||
&execute_command('rpm -q kernel --qf "%{INSTALLTIME}\n"', undef, \$new_kernel_install_time);
|
||||
$new_kernel_install_time =~ /(.*$)/;
|
||||
$new_kernel_install_time = $1;
|
||||
|
||||
&execute_command("sed -n '/^btime /s///p' /proc/stat", undef, \$last_reboot_time);
|
||||
|
||||
&execute_command("rpm -q --last kernel", undef, \$new_kernel);
|
||||
$new_kernel =~ /(kernel-\S+)/;
|
||||
$new_kernel = $1;
|
||||
$new_kernel =~ s/^\s+|\s+$//g;
|
||||
|
||||
&execute_command("uname -r", undef, \$cur_kernel);
|
||||
$cur_kernel =~ /^(\S+)$/;
|
||||
# make sure to prevent false positive alerts on custom kernels
|
||||
&execute_command("rpm -q kernel-$cur_kernel", undef, \$cur_kernel);
|
||||
$cur_kernel =~ s/^\s+|\s+$//g;
|
||||
$cur_kernel = undef if ($cur_kernel =~ /not installed/);
|
||||
|
||||
if ($new_kernel_install_time && $last_reboot_time &&
|
||||
$new_kernel_install_time > $last_reboot_time &&
|
||||
$cur_kernel && $new_kernel && $cur_kernel ne $new_kernel) {
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
0
package-updates/save_repos.cgi
Normal file → Executable file
0
package-updates/save_repos.cgi
Normal file → Executable file
@@ -2,7 +2,7 @@
|
||||
# password_change.cgi
|
||||
# Actually update a user's password by directly modifying /etc/shadow
|
||||
|
||||
BEGIN { push(@INC, ".."); };
|
||||
BEGIN { push(@INC, "."); };
|
||||
use WebminCore;
|
||||
|
||||
$ENV{'MINISERV_INTERNAL'} || die "Can only be called by miniserv.pl";
|
||||
|
||||
@@ -25,7 +25,7 @@ print &ui_form_start("save_manual.cgi", "form-data");
|
||||
print &ui_hidden("map_name", $in{'map_name'});
|
||||
print &ui_hidden("file", $file);
|
||||
print &text('manual_editing', "<tt>$file</tt>"),"<br>\n";
|
||||
print &ui_table_start();
|
||||
print &ui_table_start(undef, undef, 2);
|
||||
print &ui_table_row(undef, &ui_textarea("data", $data, 20, 80), 2);
|
||||
print &ui_table_end();
|
||||
print &ui_form_end([ [ "save", $text{'save'} ] ] );
|
||||
|
||||
@@ -16,7 +16,7 @@ foreach $pr (@procs) {
|
||||
$procmap{$p} = $pr;
|
||||
$argmap{$p} = $pr->{'args'};
|
||||
$usermap{$p} = $pr->{'user'};
|
||||
$stimemap{$p} = $pr->{'_stime'};
|
||||
$stimemap{$p} = &format_stime($pr);
|
||||
push(@{$children{$pp}}, $p);
|
||||
$inlist{$pr->{'pid'}}++;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ foreach $u (@users) {
|
||||
}
|
||||
push(@cols, $pr->{'cpu'});
|
||||
if ($info_arg_map{'_stime'}) {
|
||||
push(@cols, $pr->{'_stime'});
|
||||
push(@cols, &format_stime($pr));
|
||||
}
|
||||
push(@cols, &html_escape(&cut_string($pr->{'args'})));
|
||||
print &ui_columns_row(\@cols);
|
||||
|
||||
@@ -28,6 +28,7 @@ if ($ver >= 2) {
|
||||
}
|
||||
open(PS, "ps --cols 2048 -eo user$width,ruser$width,group$width,rgroup$width,pid,ppid,pgid,pcpu,vsz,nice,etime,time,stime,tty,args 2>/dev/null |");
|
||||
$dummy = <PS>;
|
||||
my @now = localtime(time());
|
||||
for($i=0; $line=<PS>; $i++) {
|
||||
chop($line);
|
||||
$line =~ s/^\s+//g;
|
||||
@@ -52,6 +53,17 @@ if ($ver >= 2) {
|
||||
$plist[$i]->{"bytes"} = $w[8]*1024;
|
||||
$plist[$i]->{"time"} = $w[11];
|
||||
$plist[$i]->{"_stime"} = $w[12];
|
||||
if ($w[12] =~ /^(\d+):(\d+)$/ ||
|
||||
$w[12] =~ /^(\d+):(\d+):(\d+)$/) {
|
||||
# Started today
|
||||
$plist[$i]->{"_stime_unix"} =
|
||||
timelocal($3 || 0, $2, $1, $now[3], $now[4], $now[5]);
|
||||
}
|
||||
elsif ($w[12] =~ /^(\S\S\S)\s*(\d+)$/) {
|
||||
# Started on some other day
|
||||
$plist[$i]->{"_stime_unix"} =
|
||||
timelocal(0, 0, 0, $2, &month_to_number($1), $now[5]);
|
||||
}
|
||||
$plist[$i]->{"nice"} = $w[9];
|
||||
$plist[$i]->{"args"} = @w<15 ? "defunct" : join(' ', @w[14..$#w]);
|
||||
$plist[$i]->{"_group"} = $w[2];
|
||||
|
||||
@@ -641,5 +641,21 @@ else {
|
||||
}
|
||||
}
|
||||
|
||||
# format_stime(&proc)
|
||||
# Returns the process start time in human-readable format
|
||||
sub format_stime
|
||||
{
|
||||
my ($p) = @_;
|
||||
if (!$p->{'_stime_unix'}) {
|
||||
return $p->{'_stime'}
|
||||
}
|
||||
elsif (time() - $p->{'_stime_unix'} > 86400) {
|
||||
return &make_date($p->{'_stime_unix'}, 1);
|
||||
}
|
||||
else {
|
||||
return &make_date($p->{'_stime_unix'});
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ while(<$fh>) {
|
||||
s/\s+$//;
|
||||
while(s/\\$//) {
|
||||
local $cont = <$fh>;
|
||||
last if (!$cont);
|
||||
$cont =~ s/\s+$//;
|
||||
$cont =~ s/^\s+//;
|
||||
$_ .= $cont;
|
||||
@@ -43,6 +44,7 @@ while(<$fh>) {
|
||||
while(/^\s*([^\s=]+)\s*=([^"]*)"([^"]*)$/) {
|
||||
# Quote in environment variable that is not ended!
|
||||
local $cont = <$fh>;
|
||||
last if (!$cont);
|
||||
$cont =~ s/\r|\n//g;
|
||||
$_ .= "\n".$cont;
|
||||
$lnum++;
|
||||
|
||||
@@ -8,7 +8,7 @@ acl_conf_misc=Darf erweiterte Einstellungen verändern?
|
||||
acl_conf_net=Darf Unix Netzwerkoptionen verändern?
|
||||
acl_conf_pass=Darf Authentifizierungseinstellungen verändern?
|
||||
acl_conf_print=Darf Druckereinstellungen verändern?
|
||||
acl_conf_smb=Darf Windows Einstellungen verändern?
|
||||
acl_conf_smb=Darf Windows Netzwerk-Einstellungen verändern?
|
||||
acl_copy=Darf Freigaben kopieren?
|
||||
acl_edit=Bearbeiten
|
||||
acl_enc_passwd_opts=Einstellungen für verschlüsselte Passwörter.
|
||||
@@ -66,7 +66,7 @@ bind_users=Auflistung der Benutzer verbieten?
|
||||
check_group1=$1 : Gruppen werden nur in Samba ab Version 3 unterstützt.
|
||||
check_group2=$1 : Weder der Pfad zu <i>smbgroupedit</i> oder <i>net</i> sind in der <a href='$2'>Modulkonfiguration</a> eingerichtet.
|
||||
check_user1=$1 : Verschlüsselte Passworte sind in der <a href='$2'>Authentifizierung</a> eingerichtet.
|
||||
check_user2=$1 : Weder die <i>Samba Passwort-Datei</i> oder der Pfad zu <i>pdbedit</i> sind in der <a href='$2'>Modulkonfiguration</a> eingerichtet.
|
||||
check_user2=$1 : Weder die <i>Samba Passwort-Datei</i> noch der Pfad zu <i>pdbedit</i> sind in der <a href='$2'>Modulkonfiguration</a> eingerichtet.
|
||||
config_all=Alle
|
||||
config_bytes=Bytes
|
||||
config_mins=Min
|
||||
|
||||
@@ -21,8 +21,8 @@ local (@rv, @newpacks);
|
||||
|
||||
# Build the command to run
|
||||
$ENV{'DEBIAN_FRONTEND'} = 'noninteractive';
|
||||
local $cmd = "$apt_get_command -y ".($force ? " -f" : "")." install $update";
|
||||
$update = join(" ", map { quotemeta($_) } split(/\s+/, $update));
|
||||
local $cmd = "$apt_get_command -y ".($force ? " -f" : "")." install $update";
|
||||
print "<b>",&text('apt_install', "<tt>$cmd</tt>"),"</b><p>\n";
|
||||
print "<pre>";
|
||||
&additional_log('exec', undef, $cmd);
|
||||
|
||||
@@ -83,12 +83,7 @@ if ($in{'filter'}) {
|
||||
}
|
||||
print "<table width=\"100%\">\n";
|
||||
&traverse("", 0);
|
||||
print "</table>\n";
|
||||
print &ui_form_start("ipkg-tree.cgi");
|
||||
print &ui_submit($text{'index_filter'});
|
||||
print &ui_textbox("filter", $in{'filter'}, 50);
|
||||
print &ui_form_end(),"<p>\n";
|
||||
|
||||
print "</table><p>\n";
|
||||
print &ui_link("ipkg-tree.cgi?mode=closeall", $text{'index_close'});
|
||||
print &ui_link("ipkg-tree.cgi?mode=openall", $text{'index_open'});
|
||||
if ($in{'filter'}) {
|
||||
@@ -96,6 +91,10 @@ if ($in{'filter'}) {
|
||||
print " ", &text('index_filtered',$n-$filter,$n+1), "\n";
|
||||
}
|
||||
print "<p>\n";
|
||||
print &ui_form_start("ipkg-tree.cgi");
|
||||
print &ui_submit($text{'index_filter'});
|
||||
print &ui_textbox("filter", $in{'filter'}, 50);
|
||||
print &ui_form_end(),"<p>\n";
|
||||
|
||||
&ui_print_footer("", $text{'index_return'});
|
||||
|
||||
|
||||
@@ -22,6 +22,9 @@ index_epackagecheck=El sistema de gesti
|
||||
index_eupdatecheck=El sistema d'actualització seleccionat no és vàlid: $1.<br>Pot ser que hagis de seleccionar un mètode d'actualització diferent a la pàgina de <a href='$2'>configuració del mòdul</a>.
|
||||
index_echeckpackage=No s'ha detectat cap sistema de paquets!
|
||||
index_echeckupdate=No s'ha detectat cap sistema d'actualització!
|
||||
index_filter=Filtra els Paquets
|
||||
index_filterclear=Treu el Filtre
|
||||
index_filtered=S'estan mostrant <tt>$1</tt> paquets de <tt>$2</tt>
|
||||
|
||||
search_title=Cerca de Paquet
|
||||
search_nomatch=No hi ha cap paquet que coincideixi amb '$1'
|
||||
@@ -237,6 +240,10 @@ apt_search=Busca els paquets que coincideixin amb:
|
||||
apt_find=Busca a APT...
|
||||
apt_title=Recerca a APT
|
||||
apt_name=APT
|
||||
apt_repo_url=URL base del repositori
|
||||
apt_repo_path=Components del camí de distribució
|
||||
apt_repo_eurl=Hi falta l'URL base o bé sembla invàlid
|
||||
apt_repo_epath=Hi falta el camí de distribució
|
||||
|
||||
yum_input=Paquet de YUM
|
||||
yum_install=S'esta(n) instal·lant el(s) paquet(s) amb l'ordre $1...
|
||||
@@ -257,6 +264,17 @@ yum_title=Exploraci
|
||||
yum_name=YUM
|
||||
yum_enable=Activa el repositori:
|
||||
yum_none=<Cap>
|
||||
yum_repo_id=ID del repositori
|
||||
yum_repo_name=Descripció del repositori
|
||||
yum_repo_url=URL base dels paquets
|
||||
yum_repo_gpg=Fitxer de certificat GPG
|
||||
yum_repo_none=Sense signar
|
||||
yum_repo_eid=Hi falta l'ID del repositori o bé és invàlid - només espermeten lletres i números
|
||||
yum_repo_eidclash=L'ID de repositori ja està en ús
|
||||
yum_repo_ename=Hi falta el nom del repositori
|
||||
yum_repo_eurl=Hi falt al'URL del repositori o bé és invàlid
|
||||
yum_repo_egpg=Hi falta el fitxer de certificat GPG o bé no existeix
|
||||
yum_repo_efile=El fitxer del repositori ja existeix!
|
||||
|
||||
urpmi_name=URPMI
|
||||
urpmi_input=Paquet d'URPMI
|
||||
@@ -446,8 +464,5 @@ IPKG_install_package=Instal
|
||||
IPKG_install_packagedesc=Instal·la aquest paquet al teu sistema
|
||||
IPKG_noupgrade=No hi ha res per actualitzar
|
||||
IPKG-edit_title=Gestiona el Paquet IPKG
|
||||
index_filter=Filtra els Paquets
|
||||
index_filterclear=Esborra el filtre
|
||||
index_filtered=S'estan mostrant <tt>$1</tt> paquets de <tt>$2</tt>
|
||||
IPKG_update_avail=Actualització disponible:
|
||||
IPKG_not_installed=El paquet no està instal·lat
|
||||
|
||||
@@ -83,12 +83,7 @@ if ($in{'filter'}) {
|
||||
}
|
||||
print "<table width=\"100%\">\n";
|
||||
&traverse("", 0);
|
||||
print "</table>\n";
|
||||
print &ui_form_start("tree.cgi");
|
||||
print &ui_submit($text{'index_filter'});
|
||||
print &ui_textbox("filter", $in{'filter'}, 50);
|
||||
print &ui_form_end(),"<p>\n";
|
||||
|
||||
print "</table><p>\n";
|
||||
print &ui_link("tree.cgi?mode=closeall", $text{'index_close'});
|
||||
print &ui_link("tree.cgi?mode=openall", $text{'index_open'});
|
||||
if ($in{'filter'}) {
|
||||
@@ -96,6 +91,10 @@ if ($in{'filter'}) {
|
||||
print " ", &text('index_filtered',$n-$filter,$n+1), "\n";
|
||||
}
|
||||
print "<p>\n";
|
||||
print &ui_form_start("tree.cgi");
|
||||
print &ui_submit($text{'index_filter'});
|
||||
print &ui_textbox("filter", $in{'filter'}, 50);
|
||||
print &ui_form_end(),"<p>\n";
|
||||
|
||||
&ui_print_footer("", $text{'index_return'});
|
||||
|
||||
|
||||
@@ -87,6 +87,7 @@ acl_eusers=Usuaris Auth Externs
|
||||
acl_eusersall=Tots els usuaris
|
||||
acl_euserssel=Només els llistats
|
||||
acl_case=Ignora la caixa
|
||||
acl_nodns=Desactiva les consultes
|
||||
acl_eusersre=Expressions Regulars dels Usuaris Auth Externs
|
||||
acl_asnum=Números AS
|
||||
acl_rtime=Temps de Refresc
|
||||
|
||||
@@ -90,3 +90,5 @@ Added a Module Config option to show the last collected status on the Webmin sys
|
||||
Added a config option to set a minimum interval between notifications for each monitor.
|
||||
---- Changes since 1.900 ----
|
||||
Added support for file ownership and permission checks to the File or Directory monitor.
|
||||
---- Changes since 1.910 ----
|
||||
Added a monitor type to check if a bootup action is running or not.
|
||||
|
||||
26
status/init-monitor.pl
Normal file
26
status/init-monitor.pl
Normal file
@@ -0,0 +1,26 @@
|
||||
# init-monitor.pl
|
||||
# Check if a bootup service is running
|
||||
|
||||
sub get_init_status
|
||||
{
|
||||
return { 'up' => -1 } if (!&foreign_installed("init"));
|
||||
&foreign_require("init");
|
||||
local $st = &init::status_action($_[0]->{'action'});
|
||||
return { 'up' => $st };
|
||||
}
|
||||
|
||||
sub show_init_dialog
|
||||
{
|
||||
&foreign_require("init");
|
||||
local @actions = &init::list_action_names();
|
||||
print &ui_table_row($text{'init_action'},
|
||||
&ui_select("action", $_[0]->{'action'}, \@actions));
|
||||
}
|
||||
|
||||
sub parse_init_dialog
|
||||
{
|
||||
&depends_check($_[0], "init");
|
||||
$in{'action'} || &error($text{'init_eaction'});
|
||||
$_[0]->{'action'} = $in{'action'};
|
||||
}
|
||||
|
||||
@@ -255,6 +255,13 @@ file_efile=Hi falta el nom del fitxer o directori a verificar
|
||||
file_esize=Mida de fitxer invàlida
|
||||
file_elarge=Fitxers massa grans: $1
|
||||
file_esmall=Fitxers massa petits: $1
|
||||
file_eowner=Fitxers amb propietari incorrecte: $1
|
||||
file_egroup=Fitxers amb grup incorrecte: $1
|
||||
file_owner=El propietari del fitxer ha de ser
|
||||
file_group=El grup del fitxer ha de ser
|
||||
file_nocheck=Qualsevol cosa
|
||||
file_perms=Els permisos octals han de ser
|
||||
file_eperm=Fitxers amb permisos incorrectes: $1
|
||||
|
||||
traffic_iface=Interfície a monitoritzar
|
||||
traffic_bytes=Nombre màxim de bytes/segon
|
||||
|
||||
@@ -64,6 +64,7 @@ type_mailserver=Mailserver Response
|
||||
type_sshd=SSH Server
|
||||
type_raid=RAID Device Status
|
||||
type_iface=Network Interface Status
|
||||
type_init=Bootup Action
|
||||
type_sensors=LM Sensor Status
|
||||
type_nut=NUT UPS Value
|
||||
type_mailq=Mail Queue Size
|
||||
@@ -349,6 +350,9 @@ raid_other=Other..
|
||||
|
||||
iface_iface=Interface to check
|
||||
|
||||
init_action=Action to check
|
||||
init_eaction=No action selected
|
||||
|
||||
refresh_title=Refresh Status
|
||||
refresh_doing=Refreshing the status of all monitors ..
|
||||
refresh_doing2=Refreshing the status of $1 selected monitors ..
|
||||
|
||||
@@ -21,6 +21,7 @@ right_procs=Processos en execuci
|
||||
right_disk=Espai local en disc
|
||||
right_used=$1 total, $2 utilitzat
|
||||
right_used2=$2 utilitzat, $1 garantit, $3 extra
|
||||
right_used3=$2 utilitzat, $3 en cau, $1 total
|
||||
right_out=$1 de $2
|
||||
right_fsfull=Atenció! El sistema de fitxers $2 muntat a $1 no té espai lliure al disc!
|
||||
right_fsnearly=Atenció! El sistema de fitxers $2 muntat a $1 només té $3 d'espai lliure as disc
|
||||
|
||||
@@ -223,6 +223,7 @@ if ($info->{'disk_total'} && &show_section('disk')) {
|
||||
if ($info->{'disk_fs'} && &show_section('disk')) {
|
||||
foreach my $fs (@{$info->{'disk_fs'}}) {
|
||||
next if (!$fs->{'total'});
|
||||
next if ($fs->{'type'} eq 'iso9660');
|
||||
if ($fs->{'free'} == 0) {
|
||||
my $msg = &text('right_fsfull',
|
||||
"<tt>$fs->{'dir'}</tt>",
|
||||
|
||||
@@ -30,8 +30,8 @@ if ($config{'cron_mode'} == 0) {
|
||||
$config{'upshow'} = $in{'show'};
|
||||
$config{'upmissing'} = $in{'missing'};
|
||||
$config{'upquiet'} = $in{'quiet'};
|
||||
$config{'upemail'} = $in{'email'};
|
||||
!$in{'show'} || $in{'email'} || &error($text{'update_eemail'});
|
||||
$config{'upemail'} = $in{'upemail'};
|
||||
!$in{'show'} || $in{'upemail'} || &error($text{'update_eemail'});
|
||||
&write_file("$module_config_directory/config", \%config);
|
||||
&unlock_file("$module_config_directory/config");
|
||||
|
||||
|
||||
@@ -160,6 +160,28 @@ closedir(DIR);
|
||||
return @rv;
|
||||
}
|
||||
|
||||
=head2 list_visible_themes([current-theme])
|
||||
|
||||
Lists all themes the user should be able to use, possibly including their
|
||||
current theme if one is set.
|
||||
|
||||
=cut
|
||||
sub list_visible_themes
|
||||
{
|
||||
my ($curr) = @_;
|
||||
my @rv;
|
||||
my %done;
|
||||
foreach my $theme (&list_themes()) {
|
||||
my $iscurr = $curr && $theme->{'dir'} eq $curr;
|
||||
next if (-l $root_directory."/".$theme->{'dir'} &&
|
||||
$theme->{'dir'} =~ /\d+$/ &&
|
||||
!$iscurr);
|
||||
next if ($done{$theme->{'desc'}}++ && !$iscurr);
|
||||
push(@rv, $theme);
|
||||
}
|
||||
return @rv;
|
||||
}
|
||||
|
||||
=head2 list_modules
|
||||
|
||||
Returns a list of all usermin modules installed and supported on this system.
|
||||
|
||||
@@ -720,6 +720,7 @@ if ($ENV{'QUERY_STRING'}) {
|
||||
}
|
||||
@in = split(/\&/, $in);
|
||||
foreach my $i (@in) {
|
||||
$i =~ /\0/ && &error("Null byte in query string");
|
||||
my ($k, $v) = split(/=/, $i, 2);
|
||||
if (!$_[2]) {
|
||||
$k =~ tr/\+/ /;
|
||||
@@ -1271,11 +1272,11 @@ if (!$_[$i]) {
|
||||
print "$postbody\n";
|
||||
}
|
||||
if ($tconfig{'postbodyinclude'}) {
|
||||
my ($theme, $overlay) = split(' ', $gconfig{'theme'});
|
||||
my $file_contents = read_file_contents("$root_directory/$overlay/$tconfig{'postbodyinclude'}");
|
||||
$file_contents = replace_meta($file_contents);
|
||||
print $file_contents;
|
||||
}
|
||||
my ($theme, $overlay) = split(' ', $gconfig{'theme'});
|
||||
my $file_contents = read_file_contents("$root_directory/$overlay/$tconfig{'postbodyinclude'}");
|
||||
$file_contents = replace_meta($file_contents);
|
||||
print $file_contents;
|
||||
}
|
||||
if (defined(&theme_postbody)) {
|
||||
&theme_postbody(@_);
|
||||
}
|
||||
@@ -2309,7 +2310,7 @@ while(1) {
|
||||
return $anyneg;
|
||||
}
|
||||
|
||||
=head2 http_download(host, port, page, destfile, [&error], [&callback], [sslmode], [user, pass], [timeout], [osdn-convert], [no-cache], [&headers])
|
||||
=head2 http_download(host, port, page, destfile, [&error], [&callback], [sslmode], [user], [pass], [timeout], [osdn-convert], [no-cache], [&headers])
|
||||
|
||||
Downloads data from a HTTP url to a local file or string. The parameters are :
|
||||
|
||||
@@ -4592,7 +4593,7 @@ if (defined($ENV{'FOREIGN_MODULE_NAME'}) && $ENV{'FOREIGN_ROOT_DIRECTORY'}) {
|
||||
}
|
||||
elsif ($ENV{'SCRIPT_NAME'}) {
|
||||
my $sn = $ENV{'SCRIPT_NAME'};
|
||||
$sn =~ s/^$gconfig{'webprefix'}//
|
||||
$sn =~ s/^$gconfig{'webprefix'}\//\//
|
||||
if (!$gconfig{'webprefixnoredir'});
|
||||
if ($sn =~ /^\/([^\/]+)\//) {
|
||||
# Get module name from CGI path
|
||||
@@ -4963,6 +4964,7 @@ if ($ENV{'HTTP_X_REQUESTED_WITH'} ne "XMLHttpRequest" &&
|
||||
}
|
||||
if (!$trust) {
|
||||
# Looks like a link from elsewhere .. show an error
|
||||
$current_theme = undef;
|
||||
&header($text{'referer_title'}, "", undef, 0, 1, 1);
|
||||
|
||||
$prot = lc($ENV{'HTTPS'}) eq 'on' ? "https" : "http";
|
||||
@@ -4983,6 +4985,7 @@ if (!$trust) {
|
||||
}
|
||||
print "<p>\n";
|
||||
|
||||
&footer();
|
||||
exit;
|
||||
}
|
||||
$main::no_referers_check++;
|
||||
@@ -7306,7 +7309,7 @@ elsif ($v[0] eq 'REF') {
|
||||
elsif ($v[0] eq 'UNDEF') {
|
||||
$rv = undef;
|
||||
}
|
||||
elsif ($v[0] =~ /^OBJECT\s+(.*)$/) {
|
||||
elsif ($v[0] =~ /^OBJECT\s+([A-Za-z0-9_:]+)$/) {
|
||||
# An object hash that we have to re-bless
|
||||
my $cls = $1;
|
||||
$rv = { };
|
||||
|
||||
@@ -82,6 +82,7 @@ log_inmods=M
|
||||
log_mall=Registra les accions de tots els mòduls
|
||||
log_modules=Registra només les accions de...
|
||||
log_global=<Accions globals>
|
||||
log_sched=Registra les funcions planificades
|
||||
log_files=Registra els canvis de cada acció fets a fitxers
|
||||
log_fullfiles=Registra tots els fitxers modificats abans de les accions per a la seva reversió
|
||||
log_err=No s'han pogut desar les opcions de registre
|
||||
@@ -465,7 +466,7 @@ upgrade_descsun-pkg=Aquest formulari permet actualitzar tota la instal
|
||||
upgrade_descgentoo=Aquest formulari et permet actualitzar tota la instal·lació de Webmin a una versió nova traient el paquet actual Gentoo Emerge i instal·lant-ne un de nou. Pots instal·lar-lo a partir d'un fitxer local, un fitxer pujat o a partir de la versió més recent del repositori de Gentoo. Igual que per a l'actualització manual, es conservaran tots els valors de configuració i tots els mòduls de terceres parts.
|
||||
upgrade_local=Des d'un fitxer local
|
||||
upgrade_uploaded=Des d'un fitxer pujat
|
||||
upgrade_url=des d'un URL ftp o http
|
||||
upgrade_url=des d'un URL FTP o HTTP
|
||||
upgrade_delete=Suprimeix el directori de la versió anterior després de l'actualització
|
||||
upgrade_ftp=Versió més recent de www.webmin.com
|
||||
upgrade_emerge=Versió més recent del repositori Emerge
|
||||
@@ -887,6 +888,8 @@ advanced_redir=Format de l'URL per a redireccions
|
||||
advanced_redir1=Només el camí
|
||||
advanced_redir0=Protocol, host, port i camí
|
||||
advanced_listdir=Llista els directoris sense fitxer índex
|
||||
advanced_headers=Capçaleres HTTP extra
|
||||
advanced_eheader=Les capçaleres han d'estar formatades com a <tt>Header: Valor</tt>
|
||||
|
||||
syslog_errorlog=Registre d'errors de Webmin
|
||||
|
||||
@@ -1146,7 +1149,7 @@ letsencrypt_echain=No s'ha pogut baixar el certificat encadenat: $1
|
||||
letsencrypt_echain2=El certificat encadenat descarregat des de $1 està buit
|
||||
letsencrypt_ecsr=No s'ha pogut generar la petició CSR: $1
|
||||
letsencrypt_ekeygen=No s'ha pogut generar la clau privada: $1
|
||||
letsencrypt_enative=S'ha utilitzat anteriorment el client nadiu de Let's Encrypt en aquest sistema, i s'ha de seguir utilitzant per a totes les peticions futures de certificats
|
||||
letsencrypt_enative=S'ha utilitzat anteriorment el client nadiu de Let's Encrypt (certbot) en aquest sistema, i s'ha de seguir utilitzant per a totes les peticions futures de certificats
|
||||
|
||||
announce_hide=Amaga Aquest Anunci
|
||||
|
||||
|
||||
@@ -161,6 +161,7 @@ if (($letsencrypt_cmd && -d "/etc/letsencrypt/accounts") || $wildcard) {
|
||||
" --manual-public-ip-logging-ok".
|
||||
" --config $temp".
|
||||
" --rsa-key-size $size".
|
||||
" --cert-name ".quotemeta($doms[0]).
|
||||
($staging ? " --test-cert" : "").
|
||||
" 2>&1)");
|
||||
&reset_environment();
|
||||
@@ -179,6 +180,7 @@ if (($letsencrypt_cmd && -d "/etc/letsencrypt/accounts") || $wildcard) {
|
||||
" --manual-public-ip-logging-ok".
|
||||
" --config $temp".
|
||||
" --rsa-key-size $size".
|
||||
" --cert-name ".quotemeta($doms[0]).
|
||||
($staging ? " --test-cert" : "").
|
||||
" 2>&1)");
|
||||
&reset_environment();
|
||||
|
||||
@@ -219,7 +219,9 @@ elsif (@match) {
|
||||
if ($anno) {
|
||||
$cols[$#cols] .= " <img src=images/star.gif>";
|
||||
}
|
||||
push(@cols, $minfo->{'desc'}, $act->{'user'}, $act->{'ip'});
|
||||
push(@cols, $minfo->{'desc'},
|
||||
&html_escape($act->{'user'}),
|
||||
&html_escape($act->{'ip'}));
|
||||
if ($config{'host_search'}) {
|
||||
push(@cols, $act->{'webmin'});
|
||||
}
|
||||
|
||||
@@ -43,10 +43,10 @@ else {
|
||||
}
|
||||
|
||||
print &ui_table_row($text{'view_user'},
|
||||
$act->{'user'});
|
||||
&html_escape($act->{'user'}));
|
||||
|
||||
print &ui_table_row($text{'view_ip'},
|
||||
$act->{'ip'});
|
||||
&html_escape($act->{'ip'}));
|
||||
|
||||
if ($act->{'sid'} ne '-') {
|
||||
print &ui_table_row($text{'view_sid'},
|
||||
|
||||
@@ -362,7 +362,7 @@ if (!glob($ifile."*")) {
|
||||
}
|
||||
dbmopen(%$index, $ifile, 0600);
|
||||
my @st = stat($webmin_logfile);
|
||||
if (@st && $st[9] > $index->{'lastchange'}) {
|
||||
if (@st && (!$index->{'lastchange'} || $st[9] > $index->{'lastchange'})) {
|
||||
# Log has changed .. perhaps need to rebuild
|
||||
open(LOG, $webmin_logfile);
|
||||
if ($index->{'lastsize'} && $st[7] >= $index->{'lastsize'}) {
|
||||
|
||||
Reference in New Issue
Block a user