mirror of
https://github.com/webmin/webmin.git
synced 2026-02-09 00:39:57 +00:00
Compare commits
59 Commits
dev/cache-
...
dev/die-ha
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4333435739 | ||
|
|
f01197df71 | ||
|
|
cb41eff450 | ||
|
|
352326f574 | ||
|
|
410fd07287 | ||
|
|
faededeb77 | ||
|
|
f0f8dc2850 | ||
|
|
184e8d627d | ||
|
|
fd2b7c1fc7 | ||
|
|
98192ca099 | ||
|
|
05a93a5e3d | ||
|
|
50a2820a97 | ||
|
|
87f2640ee3 | ||
|
|
4180e3d3ee | ||
|
|
b7d7ea5d8d | ||
|
|
4e09cf0b55 | ||
|
|
3f0ab3fb92 | ||
|
|
836647525a | ||
|
|
8b68eac561 | ||
|
|
0503299773 | ||
|
|
2e8000d191 | ||
|
|
65ffcea0db | ||
|
|
45845b8ca6 | ||
|
|
fead9b108d | ||
|
|
db1c9679ba | ||
|
|
d753fa7a8d | ||
|
|
f6d7e05b14 | ||
|
|
a9288423cc | ||
|
|
ac9e54afba | ||
|
|
f7cf6419d2 | ||
|
|
a9097cbb42 | ||
|
|
6f84ca1c9d | ||
|
|
dff70c3349 | ||
|
|
fe8f3f8494 | ||
|
|
f5f3510a59 | ||
|
|
1e375b4740 | ||
|
|
c573496914 | ||
|
|
73e731722d | ||
|
|
6186376b6b | ||
|
|
31e0151804 | ||
|
|
872ca66b07 | ||
|
|
088aba8cec | ||
|
|
99b8959559 | ||
|
|
94f23e63e7 | ||
|
|
7c449cf4a3 | ||
|
|
2db507e5e8 | ||
|
|
bdeb908df0 | ||
|
|
a133cdfdef | ||
|
|
fe2656acd8 | ||
|
|
64a44a667e | ||
|
|
59cef9a04f | ||
|
|
af629fe3cd | ||
|
|
80368e2a04 | ||
|
|
5237ae8ea2 | ||
|
|
54ad4f7f74 | ||
|
|
0dd94f5957 | ||
|
|
5b2b3f0790 | ||
|
|
ac05a0c43a | ||
|
|
710829c16a |
@@ -1,5 +1,14 @@
|
|||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
#### 2.103 (September 18, 2023)
|
||||||
|
* Add support for hostname detection using `hostnamectl` command
|
||||||
|
* Add support for other ACME services
|
||||||
|
* Fix to correctly switch key hash type with ACME services
|
||||||
|
* Fix bug when `backend` wasn't saved correctly in Fail2Ban module [#1992](https://github.com/webmin/webmin/issues/1992)
|
||||||
|
* Fix large files download in Upload and Download module
|
||||||
|
* Fix Google Authentication on RHEL systems derivatives
|
||||||
|
* Update the Authentic theme to the latest version with various fixes and improvements
|
||||||
|
|
||||||
#### 2.102 (August 23, 2023)
|
#### 2.102 (August 23, 2023)
|
||||||
* Add support for Amazon Linux 2023
|
* Add support for Amazon Linux 2023
|
||||||
* Fix a bug in Network Configuration module when parsing network size [sourceforge.net/discussion#55377]( https://sourceforge.net/p/webadmin/discussion/55377/thread/78e5aa05f3)
|
* Fix a bug in Network Configuration module when parsing network size [sourceforge.net/discussion#55377]( https://sourceforge.net/p/webadmin/discussion/55377/thread/78e5aa05f3)
|
||||||
|
|||||||
@@ -19,6 +19,10 @@ while(@ARGV) {
|
|||||||
shift(@ARGV);
|
shift(@ARGV);
|
||||||
$createsig = 1;
|
$createsig = 1;
|
||||||
}
|
}
|
||||||
|
elsif ($ARGV[0] eq "--key") {
|
||||||
|
shift(@ARGV);
|
||||||
|
$keyname = shift(@ARGV);
|
||||||
|
}
|
||||||
elsif ($ARGV[0] eq "--exclude") {
|
elsif ($ARGV[0] eq "--exclude") {
|
||||||
shift(@ARGV);
|
shift(@ARGV);
|
||||||
push(@exclude, shift(@ARGV));
|
push(@exclude, shift(@ARGV));
|
||||||
@@ -98,7 +102,8 @@ if ($file =~ /^(.*)\.gz$/i) {
|
|||||||
}
|
}
|
||||||
if ($createsig) {
|
if ($createsig) {
|
||||||
system("rm -f $file-sig.asc");
|
system("rm -f $file-sig.asc");
|
||||||
system("gpg --armor --output $file-sig.asc --detach-sig $file");
|
system("gpg ".($keyname ? " --default-key $keyname" : "").
|
||||||
|
" --armor --output $file-sig.asc --detach-sig $file");
|
||||||
}
|
}
|
||||||
|
|
||||||
# read_file(file, &assoc, [&order], [lowercase])
|
# read_file(file, &assoc, [&order], [lowercase])
|
||||||
|
|||||||
@@ -216,6 +216,11 @@ return wantarray ? @rv : $rv[0];
|
|||||||
sub save_directive
|
sub save_directive
|
||||||
{
|
{
|
||||||
local ($conf, $name, $value, $sname, $svalue) = @_;
|
local ($conf, $name, $value, $sname, $svalue) = @_;
|
||||||
|
$newconf = [ grep { $_->{'file'} !~ /^\/usr\/share\/dovecot/ &&
|
||||||
|
$_->{'file'} !~ /^\/opt/ } @$conf ];
|
||||||
|
if (@$newconf) {
|
||||||
|
$conf = $newconf;
|
||||||
|
}
|
||||||
local $dir;
|
local $dir;
|
||||||
if (ref($name)) {
|
if (ref($name)) {
|
||||||
# Old directive given
|
# Old directive given
|
||||||
@@ -577,5 +582,4 @@ else {
|
|||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
r
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
line2=System configuration,11
|
|
||||||
exports_file=Exported filesystems file,0
|
exports_file=Exported filesystems file,0
|
||||||
apply_cmd=Command to apply configuration,3,None
|
apply_cmd=Command to apply configuration,3,None
|
||||||
restart_command=Command to restart export server,0
|
restart_command=Command to restart export server,0
|
||||||
|
|||||||
@@ -51,9 +51,11 @@ print &ui_table_row($text{'jail_ignoreip'},
|
|||||||
my $backend = &find_value("backend", $jail);
|
my $backend = &find_value("backend", $jail);
|
||||||
print &ui_table_row($text{'jail_backend'},
|
print &ui_table_row($text{'jail_backend'},
|
||||||
&ui_select("backend", $backend || "auto",
|
&ui_select("backend", $backend || "auto",
|
||||||
[ [ "auto", $text{'jail_auto'} ],
|
[ [ "auto", $text{'jail_auto'} ],
|
||||||
[ "gamin", $text{'jail_gamin'} ],
|
[ "systemd", $text{'jail_systemd'} ],
|
||||||
[ "polling", $text{'jail_polling'} ] ]));
|
[ "polling", $text{'jail_polling'} ],
|
||||||
|
[ "gamin", $text{'jail_gamin'} ],
|
||||||
|
[ "pyinotify", $text{'jail_pyinotify'} ] ]));
|
||||||
|
|
||||||
# Email destination
|
# Email destination
|
||||||
my $destemail = &find_value("destemail", $jail);
|
my $destemail = &find_value("destemail", $jail);
|
||||||
|
|||||||
@@ -114,8 +114,10 @@ jail_efindtime=Delay between matches must be a number greater than zero
|
|||||||
jail_ebantime=Time to ban an IP must be a number greater than zero
|
jail_ebantime=Time to ban an IP must be a number greater than zero
|
||||||
jail_backend=Check for log file updates using
|
jail_backend=Check for log file updates using
|
||||||
jail_auto=Decide automatically
|
jail_auto=Decide automatically
|
||||||
jail_gamin=Gamin file alteration monitor
|
jail_systemd=systemd
|
||||||
jail_polling=Background polling
|
jail_polling=polling
|
||||||
|
jail_gamin=gamin
|
||||||
|
jail_pyinotify=pyinotify
|
||||||
jail_destemail=Default notification email
|
jail_destemail=Default notification email
|
||||||
jail_none=None set
|
jail_none=None set
|
||||||
jail_banaction=Default action to apply
|
jail_banaction=Default action to apply
|
||||||
|
|||||||
@@ -2459,10 +2459,8 @@ my $systemd_local_conf = "/etc/systemd/system";
|
|||||||
my $systemd_unit_dir1 = "/usr/lib/systemd/system";
|
my $systemd_unit_dir1 = "/usr/lib/systemd/system";
|
||||||
my $systemd_unit_dir2 = "/lib/systemd/system";
|
my $systemd_unit_dir2 = "/lib/systemd/system";
|
||||||
if ($name) {
|
if ($name) {
|
||||||
foreach my $p (
|
foreach my $p ($systemd_local_conf, $systemd_unit_dir1,
|
||||||
$systemd_local_conf,
|
$systemd_unit_dir2) {
|
||||||
$systemd_unit_dir1,
|
|
||||||
$systemd_unit_dir2) {
|
|
||||||
if (-r "$p/$name.service" ||
|
if (-r "$p/$name.service" ||
|
||||||
-r "$p/$name" ||
|
-r "$p/$name" ||
|
||||||
-r "$p/$name.target" ||
|
-r "$p/$name.target" ||
|
||||||
|
|||||||
@@ -983,7 +983,7 @@ elsif ($mode == 3) {
|
|||||||
{ 'headers' => [ [ 'Content-type', 'application/zip' ],
|
{ 'headers' => [ [ 'Content-type', 'application/zip' ],
|
||||||
[ 'Content-Transfer-Encoding', 'base64' ] ],
|
[ 'Content-Transfer-Encoding', 'base64' ] ],
|
||||||
'data' => $data } ] };
|
'data' => $data } ] };
|
||||||
$main::errors_must_die = 1;
|
$main::error_must_die = 1;
|
||||||
if (&foreign_check("mailboxes")) {
|
if (&foreign_check("mailboxes")) {
|
||||||
&foreign_require("mailboxes", "mailboxes-lib.pl");
|
&foreign_require("mailboxes", "mailboxes-lib.pl");
|
||||||
eval { &mailboxes::send_mail($mail); };
|
eval { &mailboxes::send_mail($mail); };
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ elsif ($mode == 3) {
|
|||||||
'data' => $body },
|
'data' => $body },
|
||||||
{ 'headers' => [ [ 'Content-type', 'text/plain' ] ],
|
{ 'headers' => [ [ 'Content-type', 'text/plain' ] ],
|
||||||
'data' => $data } ] };
|
'data' => $data } ] };
|
||||||
$main::errors_must_die = 1;
|
$main::error_must_die = 1;
|
||||||
if (&foreign_check("mailboxes")) {
|
if (&foreign_check("mailboxes")) {
|
||||||
&foreign_require("mailboxes", "mailboxes-lib.pl");
|
&foreign_require("mailboxes", "mailboxes-lib.pl");
|
||||||
eval { &mailboxes::send_mail($mail); };
|
eval { &mailboxes::send_mail($mail); };
|
||||||
|
|||||||
2
lang/en
2
lang/en
@@ -392,4 +392,6 @@ file_truncated_message_tail=fetched ending $1 of data, truncated $2 out of $3
|
|||||||
|
|
||||||
defcert_error=Default $1 bundled SSL certificate is being used. It is highly advised to update default <tt>$2</tt> certificate before proceeding with login.
|
defcert_error=Default $1 bundled SSL certificate is being used. It is highly advised to update default <tt>$2</tt> certificate before proceeding with login.
|
||||||
|
|
||||||
|
main_error_details=Error details
|
||||||
|
|
||||||
__norefs=1
|
__norefs=1
|
||||||
|
|||||||
@@ -3006,6 +3006,41 @@ if ($switched) {
|
|||||||
return $rv;
|
return $rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# is_gzipped_file(file)
|
||||||
|
# Returns 1 if a file is gzip compressed
|
||||||
|
sub is_gzipped_file
|
||||||
|
{
|
||||||
|
my ($file) = @_;
|
||||||
|
my $fh;
|
||||||
|
my $rv = open($fh, "<", $file);
|
||||||
|
return 0 if (!$rv);
|
||||||
|
my $two;
|
||||||
|
read($fh, $two, 2);
|
||||||
|
close($fh);
|
||||||
|
return $two eq "\037\213" ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
# gunzip_mail_file(file)
|
||||||
|
# Uncompress a mail file in place
|
||||||
|
sub gunzip_mail_file
|
||||||
|
{
|
||||||
|
my ($file) = @_;
|
||||||
|
my $switched = &switch_to_mail_user();
|
||||||
|
my $outfile = $file.".$$.uncompressed";
|
||||||
|
my $ex = system("gunzip -c ".quotemeta($file)."> ".quotemeta($outfile)." 2>/dev/null");
|
||||||
|
if ($ex) {
|
||||||
|
unlink($outfile);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
rename($outfile, $file);
|
||||||
|
}
|
||||||
|
if ($switched) {
|
||||||
|
$) = 0;
|
||||||
|
$> = 0;
|
||||||
|
}
|
||||||
|
return !$ex;
|
||||||
|
}
|
||||||
|
|
||||||
# create_as_mail_user(fh, file)
|
# create_as_mail_user(fh, file)
|
||||||
# Creates a new file, but ensures that it does not yet exist first, and then
|
# Creates a new file, but ensures that it does not yet exist first, and then
|
||||||
# sets the ownership to the mail user
|
# sets the ownership to the mail user
|
||||||
|
|||||||
@@ -1543,6 +1543,33 @@ if ($src->{'sortable'}) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# mailbox_uncompress_folder(&folder)
|
||||||
|
# If a folder or it's files are gzipped, uncompress them in place
|
||||||
|
sub mailbox_uncompress_folder
|
||||||
|
{
|
||||||
|
my ($folder) = @_;
|
||||||
|
if ($folder->{'type'} == 1 || $folder->{'type'} == 3) {
|
||||||
|
my @files = $folder->{'type'} == 1 ?
|
||||||
|
&get_maildir_files($folder->{'file'}) :
|
||||||
|
&get_mhdir_files($folder->{'file'});
|
||||||
|
if ($folder->{'type'} == 1) {
|
||||||
|
foreach my $sf (glob("$folder->{'file'}/.??*")) {
|
||||||
|
push(@files, &get_maildir_files($sf));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach my $f (@files) {
|
||||||
|
if (&is_gzipped_file($f)) {
|
||||||
|
&gunzip_mail_file($f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ($folder->{'type'} == 0) {
|
||||||
|
if (&is_gzipped_file($folder->{'file'})) {
|
||||||
|
&gunzip_mail_file($folder->{'file'});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# mailbox_copy_mail(&source, &dest, mail, ...)
|
# mailbox_copy_mail(&source, &dest, mail, ...)
|
||||||
# Copy mail from one folder to another
|
# Copy mail from one folder to another
|
||||||
sub mailbox_copy_mail
|
sub mailbox_copy_mail
|
||||||
@@ -3366,7 +3393,10 @@ local $dmail = {
|
|||||||
[ 'Content-Transfer-Encoding' => '7bit' ] ],
|
[ 'Content-Transfer-Encoding' => '7bit' ] ],
|
||||||
'data' => $dsn }
|
'data' => $dsn }
|
||||||
] };
|
] };
|
||||||
eval { local $main::errors_must_die = 1; &send_mail($dmail); };
|
eval {
|
||||||
|
local $main::error_must_die = 1;
|
||||||
|
&send_mail($dmail);
|
||||||
|
};
|
||||||
return $to;
|
return $to;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Ontbrekende of ongeldige aantal boodskappe om te soek
|
|||||||
search_withstatus=, met status $1
|
search_withstatus=, met status $1
|
||||||
|
|
||||||
folder_inbox=posbus
|
folder_inbox=posbus
|
||||||
folder_sent=Gestuurde pos
|
folder_sent=Gestuur
|
||||||
folder_drafts=Drafts
|
folder_drafts=Drafts
|
||||||
folder_trash=asblik
|
folder_trash=asblik
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=عدد الرسائل المفقودة أو غير الصحيحة
|
|||||||
search_withstatus=, with status $1
|
search_withstatus=, with status $1
|
||||||
|
|
||||||
folder_inbox=صندوق الوارد
|
folder_inbox=صندوق الوارد
|
||||||
folder_sent=البريد المرسل
|
folder_sent=مرسل
|
||||||
folder_drafts=المسودات
|
folder_drafts=المسودات
|
||||||
folder_trash=قمامة، يدمر، يهدم
|
folder_trash=قمامة، يدمر، يهدم
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Адсутнічае альбо недапушчальная ко
|
|||||||
search_withstatus=, са статусам $1
|
search_withstatus=, са статусам $1
|
||||||
|
|
||||||
folder_inbox=Уваходныя
|
folder_inbox=Уваходныя
|
||||||
folder_sent=Даслана пошта
|
folder_sent=Адпраўлена
|
||||||
folder_drafts=Чарнавікі
|
folder_drafts=Чарнавікі
|
||||||
folder_trash=Хлам
|
folder_trash=Хлам
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Липсващ или невалиден брой съобщен
|
|||||||
search_withstatus=, със статус $1
|
search_withstatus=, със статус $1
|
||||||
|
|
||||||
folder_inbox=Входящи
|
folder_inbox=Входящи
|
||||||
folder_sent=Изпратена поща
|
folder_sent=Изпратено
|
||||||
folder_drafts=дама
|
folder_drafts=дама
|
||||||
folder_trash=боклук
|
folder_trash=боклук
|
||||||
|
|
||||||
|
|||||||
@@ -319,7 +319,6 @@ search_elatest=Hi falta el nombre de missatges a buscar o bé és invàlid
|
|||||||
search_withstatus=, amb estat $1
|
search_withstatus=, amb estat $1
|
||||||
|
|
||||||
folder_inbox=Entrada
|
folder_inbox=Entrada
|
||||||
folder_sent=Enviat
|
|
||||||
folder_drafts=Drafts
|
folder_drafts=Drafts
|
||||||
folder_trash=Trash
|
folder_trash=Trash
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
index_return=llista d'usuaris
|
index_return=llista d'usuaris
|
||||||
|
|
||||||
|
folder_sent=Enviat
|
||||||
|
|
||||||
editor_heading=Encapçalament
|
editor_heading=Encapçalament
|
||||||
editor_paragraph=Paràgraf
|
editor_paragraph=Paràgraf
|
||||||
editor_fontfamily_default=Per defecte
|
editor_fontfamily_default=Per defecte
|
||||||
|
|||||||
@@ -295,7 +295,6 @@ search_elatest=Chybějící nebo nevhodný počet zpráv k prohledání
|
|||||||
search_withstatus=, se stavem $1
|
search_withstatus=, se stavem $1
|
||||||
|
|
||||||
folder_inbox=Doručená pošta
|
folder_inbox=Doručená pošta
|
||||||
folder_sent=Odesláné pošta
|
|
||||||
folder_drafts=Koncepty
|
folder_drafts=Koncepty
|
||||||
folder_trash=Koš
|
folder_trash=Koš
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ reply_html1=Vytvořte HTML
|
|||||||
search_msg6=Výsledky hledání $1 v poli $2
|
search_msg6=Výsledky hledání $1 v poli $2
|
||||||
search_attach=Musí mít přílohy?
|
search_attach=Musí mít přílohy?
|
||||||
|
|
||||||
|
folder_sent=Odesláno
|
||||||
|
|
||||||
left_mail=Pošta
|
left_mail=Pošta
|
||||||
left_search=Vyhledávání:
|
left_search=Vyhledávání:
|
||||||
left_folders=Správa složek
|
left_folders=Správa složek
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Manglende eller ugyldigt antal meddelelser til søgning
|
|||||||
search_withstatus=, med status $1
|
search_withstatus=, med status $1
|
||||||
|
|
||||||
folder_inbox=Indbakke
|
folder_inbox=Indbakke
|
||||||
folder_sent=Sendt post
|
folder_sent=Sendt
|
||||||
folder_drafts=Kladder
|
folder_drafts=Kladder
|
||||||
folder_trash=Affald
|
folder_trash=Affald
|
||||||
|
|
||||||
|
|||||||
@@ -319,7 +319,6 @@ search_elatest=Fehlende oder ungültige Anzahl an Mails für die Suche
|
|||||||
search_withstatus=, mit Status $1
|
search_withstatus=, mit Status $1
|
||||||
|
|
||||||
folder_inbox=Posteingang
|
folder_inbox=Posteingang
|
||||||
folder_sent=Versendete Mail
|
|
||||||
folder_drafts=Entwürfe
|
folder_drafts=Entwürfe
|
||||||
folder_trash=Papierkorb
|
folder_trash=Papierkorb
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
index_return=Benutzerliste
|
index_return=Benutzerliste
|
||||||
|
|
||||||
|
folder_sent=Gesendet
|
||||||
|
|
||||||
editor_heading=Überschrift
|
editor_heading=Überschrift
|
||||||
editor_paragraph=Absatz
|
editor_paragraph=Absatz
|
||||||
editor_fontfamily_default=Standard
|
editor_fontfamily_default=Standard
|
||||||
|
|||||||
@@ -268,7 +268,6 @@ search_elatest=Λείπει ή είναι άκυρος ο αριθμός των
|
|||||||
search_withstatus=, με κατάσταση $1
|
search_withstatus=, με κατάσταση $1
|
||||||
|
|
||||||
folder_inbox=Εισερχόμενα
|
folder_inbox=Εισερχόμενα
|
||||||
folder_sent=Απεσταλμένα
|
|
||||||
folder_drafts=Πρόχειρα
|
folder_drafts=Πρόχειρα
|
||||||
folder_trash=Απορρίματα
|
folder_trash=Απορρίματα
|
||||||
|
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ confirm_warnallf=Είστε βέβαιοι ότι θέλετε να διαγρά
|
|||||||
search_msg6=Αποτελέσματα αναζήτησης για $1 στο πεδίο $2
|
search_msg6=Αποτελέσματα αναζήτησης για $1 στο πεδίο $2
|
||||||
search_attach=Πρέπει να έχετε συνημμένα;
|
search_attach=Πρέπει να έχετε συνημμένα;
|
||||||
|
|
||||||
|
folder_sent=Απεσταλμένα
|
||||||
|
|
||||||
sform_header=Προηγμένες επιλογές αναζήτησης ηλεκτρονικού ταχυδρομείου
|
sform_header=Προηγμένες επιλογές αναζήτησης ηλεκτρονικού ταχυδρομείου
|
||||||
sform_andmode=Λειτουργία κριτηρίων
|
sform_andmode=Λειτουργία κριτηρίων
|
||||||
sform_folder2=Αναζήτηση σε φάκελο (-ες)
|
sform_folder2=Αναζήτηση σε φάκελο (-ες)
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Missing or invalid number of messages to search
|
|||||||
search_withstatus=, with status $1
|
search_withstatus=, with status $1
|
||||||
|
|
||||||
folder_inbox=Inbox
|
folder_inbox=Inbox
|
||||||
folder_sent=Sent mail
|
folder_sent=Sent
|
||||||
folder_drafts=Drafts
|
folder_drafts=Drafts
|
||||||
folder_trash=Trash
|
folder_trash=Trash
|
||||||
|
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ search_elatest=Número de mensajes faltantes o no válidos para buscar
|
|||||||
search_withstatus=, con estado $1
|
search_withstatus=, con estado $1
|
||||||
|
|
||||||
folder_inbox=Bandeja de entrada
|
folder_inbox=Bandeja de entrada
|
||||||
folder_sent=Correo enviado
|
folder_sent=Enviado
|
||||||
folder_drafts=Borradores
|
folder_drafts=Borradores
|
||||||
folder_trash=Basura
|
folder_trash=Basura
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Bilatu beharreko mezu kopuru falta edo baliogabea
|
|||||||
search_withstatus=, egoera $1 egoerarekin
|
search_withstatus=, egoera $1 egoerarekin
|
||||||
|
|
||||||
folder_inbox=Sarrerako ontzia
|
folder_inbox=Sarrerako ontzia
|
||||||
folder_sent=Bidalitako mezuak
|
folder_sent=Bidali
|
||||||
folder_drafts=Turkiarrak
|
folder_drafts=Turkiarrak
|
||||||
folder_trash=Trash
|
folder_trash=Trash
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=تعداد پیام های نامعتبر یا نامعتبر ا
|
|||||||
search_withstatus=, with status $1
|
search_withstatus=, with status $1
|
||||||
|
|
||||||
folder_inbox=صندوق ورودی
|
folder_inbox=صندوق ورودی
|
||||||
folder_sent=نامه ارسال شده
|
folder_sent=ارسال شد
|
||||||
folder_drafts=پیش نویس
|
folder_drafts=پیش نویس
|
||||||
folder_trash=زباله ها
|
folder_trash=زباله ها
|
||||||
|
|
||||||
|
|||||||
@@ -205,7 +205,6 @@ search_nolatest=Kaikki kansiossa
|
|||||||
search_latestnum=Vain viimeisimmät
|
search_latestnum=Vain viimeisimmät
|
||||||
search_elatest=Puuttuva tai virheellinen määrä etsittäviä viestejä
|
search_elatest=Puuttuva tai virheellinen määrä etsittäviä viestejä
|
||||||
|
|
||||||
folder_sent=Lähetetyt
|
|
||||||
folder_drafts=Luonnokset
|
folder_drafts=Luonnokset
|
||||||
folder_trash=Roskakori
|
folder_trash=Roskakori
|
||||||
|
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ search_onestatus=Vain tila
|
|||||||
search_withstatus=, tila $1
|
search_withstatus=, tila $1
|
||||||
|
|
||||||
folder_inbox=Saapuneet
|
folder_inbox=Saapuneet
|
||||||
|
folder_sent=Lähetetty
|
||||||
|
|
||||||
detach_err=Tiedoston irrottaminen epäonnistui
|
detach_err=Tiedoston irrottaminen epäonnistui
|
||||||
detach_edir=Ei tiedostoa tai hakemistoa tallennettavaksi syötettyyn
|
detach_edir=Ei tiedostoa tai hakemistoa tallennettavaksi syötettyyn
|
||||||
|
|||||||
@@ -320,7 +320,6 @@ search_elatest=nombre de messages à rechercher manquant ou invalide
|
|||||||
search_withstatus=, avec statut $1
|
search_withstatus=, avec statut $1
|
||||||
|
|
||||||
folder_inbox=Boite de Réception
|
folder_inbox=Boite de Réception
|
||||||
folder_sent=Courriers Envoyés
|
|
||||||
folder_drafts=Brouillons
|
folder_drafts=Brouillons
|
||||||
folder_trash=Corbeille
|
folder_trash=Corbeille
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
folder_sent=Envoyé
|
||||||
|
|
||||||
editor_heading=Titre
|
editor_heading=Titre
|
||||||
editor_paragraph=Paragraphe
|
editor_paragraph=Paragraphe
|
||||||
editor_fontfamily_default=Défaut
|
editor_fontfamily_default=Défaut
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=מספר הודעות חסר או לא חוקי לחיפוש
|
|||||||
search_withstatus=, with status $1
|
search_withstatus=, with status $1
|
||||||
|
|
||||||
folder_inbox=תיבת הדואר הנכנס
|
folder_inbox=תיבת הדואר הנכנס
|
||||||
folder_sent=שלח מייל
|
folder_sent=נשלח
|
||||||
folder_drafts=טיוטות
|
folder_drafts=טיוטות
|
||||||
folder_trash=זבל
|
folder_trash=זבל
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Nedostaje ili nevažeći broj poruka za pretraživanje
|
|||||||
search_withstatus=, sa statusom $1
|
search_withstatus=, sa statusom $1
|
||||||
|
|
||||||
folder_inbox=Ulazni spremnik
|
folder_inbox=Ulazni spremnik
|
||||||
folder_sent=Poslana pošta
|
folder_sent=Poslano
|
||||||
folder_drafts=nacrti
|
folder_drafts=nacrti
|
||||||
folder_trash=Otpad
|
folder_trash=Otpad
|
||||||
|
|
||||||
|
|||||||
@@ -147,7 +147,6 @@ search_attach=Szeretne csatolmányokat?
|
|||||||
search_allstatus=Minden
|
search_allstatus=Minden
|
||||||
|
|
||||||
folder_inbox=Bejövő levelek
|
folder_inbox=Bejövő levelek
|
||||||
folder_sent=Elküldött levelek
|
|
||||||
folder_drafts=Piszkozatok
|
folder_drafts=Piszkozatok
|
||||||
folder_trash=Kuka
|
folder_trash=Kuka
|
||||||
|
|
||||||
|
|||||||
@@ -181,6 +181,8 @@ search_latestnum=Csak a legújabb
|
|||||||
search_elatest=Hiányzik vagy érvénytelen a keresett üzenetek száma
|
search_elatest=Hiányzik vagy érvénytelen a keresett üzenetek száma
|
||||||
search_withstatus=, állapotával $1
|
search_withstatus=, állapotával $1
|
||||||
|
|
||||||
|
folder_sent=Küldött
|
||||||
|
|
||||||
detach_err=A fájl leválasztása nem sikerült
|
detach_err=A fájl leválasztása nem sikerült
|
||||||
detach_edir=Nincs fájl vagy könyvtár, amelyet menteni kellene a megadott fájlba
|
detach_edir=Nincs fájl vagy könyvtár, amelyet menteni kellene a megadott fájlba
|
||||||
detach_eopen=A $1 megnyitása nem sikerült : $2
|
detach_eopen=A $1 megnyitása nem sikerült : $2
|
||||||
|
|||||||
@@ -316,7 +316,6 @@ search_elatest=Numero di messaggi da cercare mancante o non valido
|
|||||||
search_withstatus=, con stato $1
|
search_withstatus=, con stato $1
|
||||||
|
|
||||||
folder_inbox=Posta in arrivo
|
folder_inbox=Posta in arrivo
|
||||||
folder_sent=Posta inviata
|
|
||||||
folder_drafts=Bozze
|
folder_drafts=Bozze
|
||||||
folder_trash=Cestino
|
folder_trash=Cestino
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ view_nobody=Questo messaggio non ha contenuti del corpo.
|
|||||||
|
|
||||||
search_msg6=Risultati della ricerca per $1 nel campo $2
|
search_msg6=Risultati della ricerca per $1 nel campo $2
|
||||||
|
|
||||||
|
folder_sent=Inviato
|
||||||
|
|
||||||
left_mail=posta
|
left_mail=posta
|
||||||
left_search=Ricerca:
|
left_search=Ricerca:
|
||||||
left_folders=Gestisci cartelle
|
left_folders=Gestisci cartelle
|
||||||
|
|||||||
@@ -295,7 +295,6 @@ search_elatest=Missing or invalid number of messages to search
|
|||||||
search_withstatus=, with status $1
|
search_withstatus=, with status $1
|
||||||
|
|
||||||
folder_inbox=Inbox
|
folder_inbox=Inbox
|
||||||
folder_sent=Sent mail
|
|
||||||
folder_drafts=Drafts
|
folder_drafts=Drafts
|
||||||
folder_trash=Trash
|
folder_trash=Trash
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ reply_html1=HTMLを作成
|
|||||||
search_msg6=$2フィールドの$1の検索結果
|
search_msg6=$2フィールドの$1の検索結果
|
||||||
search_attach=添付ファイルが必要ですか?
|
search_attach=添付ファイルが必要ですか?
|
||||||
|
|
||||||
|
folder_sent=送信済み
|
||||||
|
|
||||||
left_mail=郵便物
|
left_mail=郵便物
|
||||||
left_search=探す:
|
left_search=探す:
|
||||||
left_folders=フォルダーを管理する
|
left_folders=フォルダーを管理する
|
||||||
|
|||||||
@@ -285,7 +285,6 @@ search_elatest=검색 메시지수가 지정되지 않았거나 유효하지 않
|
|||||||
search_withstatus=, 상태 $1로
|
search_withstatus=, 상태 $1로
|
||||||
|
|
||||||
folder_inbox=인박스
|
folder_inbox=인박스
|
||||||
folder_sent=메일 보내기
|
|
||||||
folder_drafts=초안
|
folder_drafts=초안
|
||||||
folder_trash=휴지통
|
folder_trash=휴지통
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ search_ewhat=입력 된 행과 일치하는 텍스트가 없습니다 $1
|
|||||||
search_msg6=$2 필드에서 $1에 대한 검색 결과
|
search_msg6=$2 필드에서 $1에 대한 검색 결과
|
||||||
search_attach=첨부 파일이 있어야합니까?
|
search_attach=첨부 파일이 있어야합니까?
|
||||||
|
|
||||||
|
folder_sent=전송된
|
||||||
|
|
||||||
sform_andmode=기준 모드
|
sform_andmode=기준 모드
|
||||||
|
|
||||||
left_mail=우편
|
left_mail=우편
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Trūksta arba netinkamas ieškomų pranešimų skaičius
|
|||||||
search_withstatus=, su būsena $1
|
search_withstatus=, su būsena $1
|
||||||
|
|
||||||
folder_inbox=Pašto dėžutę
|
folder_inbox=Pašto dėžutę
|
||||||
folder_sent=Išsiųsti laiškai
|
folder_sent=Išsiųsta
|
||||||
folder_drafts=Juodraščiai
|
folder_drafts=Juodraščiai
|
||||||
folder_trash=Šiukšlių dėžė
|
folder_trash=Šiukšlių dėžė
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Trūkst vai nav derīgs meklējamo ziņojumu skaits
|
|||||||
search_withstatus=, ar statusu $1
|
search_withstatus=, ar statusu $1
|
||||||
|
|
||||||
folder_inbox=Iesūtne
|
folder_inbox=Iesūtne
|
||||||
folder_sent=Nosūtītais pasts
|
folder_sent=Nosūtīts
|
||||||
folder_drafts=Melnraksti
|
folder_drafts=Melnraksti
|
||||||
folder_trash=Atkritumi
|
folder_trash=Atkritumi
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Bilangan mesej yang hilang atau tidak sah untuk dicari
|
|||||||
search_withstatus=, dengan status $1
|
search_withstatus=, dengan status $1
|
||||||
|
|
||||||
folder_inbox=Peti masuk
|
folder_inbox=Peti masuk
|
||||||
folder_sent=Menghantar surat
|
folder_sent=Dihantar
|
||||||
folder_drafts=Draf
|
folder_drafts=Draf
|
||||||
folder_trash=Sampah
|
folder_trash=Sampah
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Numru ta 'messaġġi nieqsa jew invalidi biex tfittex
|
|||||||
search_withstatus=, bi status $1
|
search_withstatus=, bi status $1
|
||||||
|
|
||||||
folder_inbox=Inbox
|
folder_inbox=Inbox
|
||||||
folder_sent=Intbagħat il-posta
|
folder_sent=Mibgħuta
|
||||||
folder_drafts=Abbozzi
|
folder_drafts=Abbozzi
|
||||||
folder_trash=Trash
|
folder_trash=Trash
|
||||||
|
|
||||||
|
|||||||
@@ -317,7 +317,6 @@ search_elatest=Ontbrekende of ongeldige aantal berichten om te zoeken
|
|||||||
search_withstatus=, met status $1
|
search_withstatus=, met status $1
|
||||||
|
|
||||||
folder_inbox=Inbox
|
folder_inbox=Inbox
|
||||||
folder_sent=Verstuur email
|
|
||||||
folder_drafts=Ontwerpen
|
folder_drafts=Ontwerpen
|
||||||
folder_trash=Vuilnis
|
folder_trash=Vuilnis
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ mail_specialsync=Synchronisatie speciaal
|
|||||||
|
|
||||||
search_msg6=Zoekresultaten voor $1 in het veld $2
|
search_msg6=Zoekresultaten voor $1 in het veld $2
|
||||||
|
|
||||||
|
folder_sent=Verstuurd
|
||||||
|
|
||||||
left_mail=Mail
|
left_mail=Mail
|
||||||
left_search=Zoeken:
|
left_search=Zoeken:
|
||||||
left_folders=Beheer mappen
|
left_folders=Beheer mappen
|
||||||
|
|||||||
@@ -320,7 +320,6 @@ search_elatest=Manglende eller ugyldig antall meldinger å søke gjennom
|
|||||||
search_withstatus=, med status $1
|
search_withstatus=, med status $1
|
||||||
|
|
||||||
folder_inbox=Innboks
|
folder_inbox=Innboks
|
||||||
folder_sent=Sendt e-post
|
|
||||||
folder_drafts=Kladd
|
folder_drafts=Kladd
|
||||||
folder_trash=Papirkurv
|
folder_trash=Papirkurv
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
folder_sent=Sendt
|
||||||
|
|
||||||
editor_heading=Overskrift
|
editor_heading=Overskrift
|
||||||
editor_paragraph=Avsnitt
|
editor_paragraph=Avsnitt
|
||||||
editor_fontfamily_default=Misligholde
|
editor_fontfamily_default=Misligholde
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ search_elatest=Brakująca lub niepoprawna liczba wiadomości do przeszukania
|
|||||||
search_withstatus=, ze statusem $1
|
search_withstatus=, ze statusem $1
|
||||||
|
|
||||||
folder_inbox=W pudełku
|
folder_inbox=W pudełku
|
||||||
folder_sent=Wysłany mail
|
folder_sent=Wysłano
|
||||||
folder_drafts=Warcaby
|
folder_drafts=Warcaby
|
||||||
folder_trash=Śmieci
|
folder_trash=Śmieci
|
||||||
|
|
||||||
|
|||||||
@@ -287,7 +287,7 @@ search_elatest=Número de mensagens ausente ou inválido para pesquisa
|
|||||||
search_withstatus=, com status $1
|
search_withstatus=, com status $1
|
||||||
|
|
||||||
folder_inbox=Caixa de entrada
|
folder_inbox=Caixa de entrada
|
||||||
folder_sent=Correspondência enviada
|
folder_sent=Enviado
|
||||||
folder_drafts=Rascunhos
|
folder_drafts=Rascunhos
|
||||||
folder_trash=Lixo
|
folder_trash=Lixo
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,2 @@
|
|||||||
folder_inbox=Caixa de Entrada
|
folder_inbox=Caixa de Entrada
|
||||||
folder_sent=E-mais Enviados
|
|
||||||
folder_trash=Lixo
|
folder_trash=Lixo
|
||||||
|
|||||||
@@ -319,6 +319,7 @@ search_latestnum=Apenas os mais recentes
|
|||||||
search_elatest=Número de mensagens ausente ou inválido para pesquisa
|
search_elatest=Número de mensagens ausente ou inválido para pesquisa
|
||||||
search_withstatus=, com status $1
|
search_withstatus=, com status $1
|
||||||
|
|
||||||
|
folder_sent=Enviado
|
||||||
folder_drafts=Rascunhos
|
folder_drafts=Rascunhos
|
||||||
|
|
||||||
detach_err=Falha ao desanexar arquivo
|
detach_err=Falha ao desanexar arquivo
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Număr de mesaje lipsă sau nevalide de căutat
|
|||||||
search_withstatus=, cu statut $1
|
search_withstatus=, cu statut $1
|
||||||
|
|
||||||
folder_inbox=Inbox
|
folder_inbox=Inbox
|
||||||
folder_sent=E-mail trimis
|
folder_sent=Trimis
|
||||||
folder_drafts=Schițe
|
folder_drafts=Schițe
|
||||||
folder_trash=Gunoi
|
folder_trash=Gunoi
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Отсутствует или неверное количеств
|
|||||||
search_withstatus=со статусом $1
|
search_withstatus=со статусом $1
|
||||||
|
|
||||||
folder_inbox=входящие
|
folder_inbox=входящие
|
||||||
folder_sent=Отправленные письма
|
folder_sent=Отправил
|
||||||
folder_drafts=Черновики
|
folder_drafts=Черновики
|
||||||
folder_trash=дрянь
|
folder_trash=дрянь
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Chýba alebo je neplatný počet správ na vyhľadávanie
|
|||||||
search_withstatus=, so stavom $1
|
search_withstatus=, so stavom $1
|
||||||
|
|
||||||
folder_inbox=Doručená pošta
|
folder_inbox=Doručená pošta
|
||||||
folder_sent=Odoslaná pošta
|
folder_sent=Odoslané
|
||||||
folder_drafts=dáma
|
folder_drafts=dáma
|
||||||
folder_trash=Smeti
|
folder_trash=Smeti
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Manjkajoče ali neveljavno število sporočil za iskanje
|
|||||||
search_withstatus=, s statusom $1
|
search_withstatus=, s statusom $1
|
||||||
|
|
||||||
folder_inbox=Prejeto
|
folder_inbox=Prejeto
|
||||||
folder_sent=Poslana pošta
|
folder_sent=Poslano
|
||||||
folder_drafts=Osnutki
|
folder_drafts=Osnutki
|
||||||
folder_trash=Smeti
|
folder_trash=Smeti
|
||||||
|
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ search_elatest=Det saknas eller ogiltigt antal meddelanden att söka efter
|
|||||||
search_withstatus=, med status $1
|
search_withstatus=, med status $1
|
||||||
|
|
||||||
folder_inbox=Inkorg
|
folder_inbox=Inkorg
|
||||||
folder_sent=Skickade post
|
folder_sent=Skickat
|
||||||
folder_drafts=utkast
|
folder_drafts=utkast
|
||||||
folder_trash=Skräp
|
folder_trash=Skräp
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=จำนวนข้อความที่ขาดหาย
|
|||||||
search_withstatus=ด้วยสถานะ $1
|
search_withstatus=ด้วยสถานะ $1
|
||||||
|
|
||||||
folder_inbox=กล่องขาเข้า
|
folder_inbox=กล่องขาเข้า
|
||||||
folder_sent=ส่งอีเมล
|
folder_sent=ส่งแล้ว
|
||||||
folder_drafts=ร่าง
|
folder_drafts=ร่าง
|
||||||
folder_trash=ขยะ
|
folder_trash=ขยะ
|
||||||
|
|
||||||
|
|||||||
@@ -275,7 +275,6 @@ search_elatest=Arama için hatalı veya gecersiz sayıda mesaj
|
|||||||
search_withstatus=, durum kodu $1 olan
|
search_withstatus=, durum kodu $1 olan
|
||||||
|
|
||||||
folder_inbox=Gelen Kutusu
|
folder_inbox=Gelen Kutusu
|
||||||
folder_sent=Gönderilen postalar
|
|
||||||
folder_drafts=Taslaklar
|
folder_drafts=Taslaklar
|
||||||
folder_trash=Çop Kutusu
|
folder_trash=Çop Kutusu
|
||||||
|
|
||||||
|
|||||||
@@ -52,6 +52,8 @@ send_title2=Posta Kaydedildi
|
|||||||
search_msg6=$2 alanında $1 için arama sonuçları
|
search_msg6=$2 alanında $1 için arama sonuçları
|
||||||
search_attach=Ekleri olmalı mı?
|
search_attach=Ekleri olmalı mı?
|
||||||
|
|
||||||
|
folder_sent=Gönderilmiş
|
||||||
|
|
||||||
sform_header=Gelişmiş e-posta arama seçenekleri
|
sform_header=Gelişmiş e-posta arama seçenekleri
|
||||||
sform_andmode=Ölçüt modu
|
sform_andmode=Ölçüt modu
|
||||||
sform_folder2=Klasörlerde ara
|
sform_folder2=Klasörlerde ara
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Відсутня або недійсна кількість по
|
|||||||
search_withstatus=, зі статусом $1
|
search_withstatus=, зі статусом $1
|
||||||
|
|
||||||
folder_inbox=Вхідні
|
folder_inbox=Вхідні
|
||||||
folder_sent=Надіслати пошту
|
folder_sent=Надісланий
|
||||||
folder_drafts=Чернетки
|
folder_drafts=Чернетки
|
||||||
folder_trash=Сміття
|
folder_trash=Сміття
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=تلاش کرنے کیلئے پیغامات کی گمشدہ یا
|
|||||||
search_withstatus=, with status $1
|
search_withstatus=, with status $1
|
||||||
|
|
||||||
folder_inbox=ان باکس
|
folder_inbox=ان باکس
|
||||||
folder_sent=میل بھیجا
|
folder_sent=بھیجا
|
||||||
folder_drafts=ڈرافٹس
|
folder_drafts=ڈرافٹس
|
||||||
folder_trash=کوڑے دان
|
folder_trash=کوڑے دان
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ search_elatest=Thiếu hoặc không hợp lệ số lượng tin nhắn để t
|
|||||||
search_withstatus=, với trạng thái $1
|
search_withstatus=, với trạng thái $1
|
||||||
|
|
||||||
folder_inbox=Hộp thư đến
|
folder_inbox=Hộp thư đến
|
||||||
folder_sent=Gửi mail
|
folder_sent=Đã gửi
|
||||||
folder_drafts=Dự thảo
|
folder_drafts=Dự thảo
|
||||||
folder_trash=Rác
|
folder_trash=Rác
|
||||||
|
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ search_elatest=要搜索的消息丢失或数量无效
|
|||||||
search_withstatus=,状态为$1
|
search_withstatus=,状态为$1
|
||||||
|
|
||||||
folder_inbox=收件箱
|
folder_inbox=收件箱
|
||||||
folder_sent=发送邮件
|
folder_sent=发送
|
||||||
folder_drafts=草稿
|
folder_drafts=草稿
|
||||||
folder_trash=垃圾
|
folder_trash=垃圾
|
||||||
|
|
||||||
|
|||||||
@@ -213,7 +213,6 @@ search_local=在本地資料夾
|
|||||||
search_all=在所有資料夾
|
search_all=在所有資料夾
|
||||||
|
|
||||||
folder_inbox=收件夾
|
folder_inbox=收件夾
|
||||||
folder_sent=傳送郵件
|
|
||||||
folder_drafts=草稿
|
folder_drafts=草稿
|
||||||
folder_trash=垃圾桶
|
folder_trash=垃圾桶
|
||||||
|
|
||||||
|
|||||||
@@ -117,6 +117,8 @@ search_latestnum=只有最新
|
|||||||
search_elatest=要搜索的消息丟失或數量無效
|
search_elatest=要搜索的消息丟失或數量無效
|
||||||
search_withstatus=,狀態為$1
|
search_withstatus=,狀態為$1
|
||||||
|
|
||||||
|
folder_sent=發送
|
||||||
|
|
||||||
sform_header=進階電子郵件搜尋選項
|
sform_header=進階電子郵件搜尋選項
|
||||||
sform_andmode=標準模式
|
sform_andmode=標準模式
|
||||||
sform_folder2=搜索文件夾
|
sform_folder2=搜索文件夾
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ $ENV{'PATH'} = "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin";
|
|||||||
my $allow_overwrite = 0;
|
my $allow_overwrite = 0;
|
||||||
|
|
||||||
my ($force_theme, $rpmdepends, $no_prefix, $vendor, $provides, $url,
|
my ($force_theme, $rpmdepends, $no_prefix, $vendor, $provides, $url,
|
||||||
$force_usermin, $final_mod, $sign, $epoch, $dir, $ver, @extrareqs,
|
$force_usermin, $final_mod, $sign, $keyname, $epoch, $dir, $ver, @extrareqs,
|
||||||
@exclude);
|
@exclude);
|
||||||
|
|
||||||
# Parse command-line args
|
# Parse command-line args
|
||||||
@@ -85,6 +85,9 @@ while(@ARGV) {
|
|||||||
elsif ($a eq "--sign") {
|
elsif ($a eq "--sign") {
|
||||||
$sign = 1;
|
$sign = 1;
|
||||||
}
|
}
|
||||||
|
elsif ($a eq "--key") {
|
||||||
|
$keyname = shift(@ARGV);
|
||||||
|
}
|
||||||
elsif ($a eq "--epoch") {
|
elsif ($a eq "--epoch") {
|
||||||
$epoch = shift(@ARGV);
|
$epoch = shift(@ARGV);
|
||||||
}
|
}
|
||||||
@@ -426,7 +429,8 @@ unlink("$rpm_source_dir/$mod.tar.gz");
|
|||||||
|
|
||||||
# Sign if requested
|
# Sign if requested
|
||||||
if ($sign) {
|
if ($sign) {
|
||||||
system("echo | rpm --resign $rpm_dir/$prefix$mod-$ver-$release.noarch.rpm $source_rpm_dir/$prefix$mod-$ver-$release.src.rpm");
|
my $keyflag = $keyname ? "-D '_gpg_name $keyname'" : "";
|
||||||
|
system("echo | rpm --resign $keyflag $rpm_dir/$prefix$mod-$ver-$release.noarch.rpm $source_rpm_dir/$prefix$mod-$ver-$release.src.rpm");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($target_dir =~ /:/) {
|
if ($target_dir =~ /:/) {
|
||||||
|
|||||||
@@ -24,80 +24,80 @@ if ( !$in{'go'} ) {
|
|||||||
print "<input type=hidden name=go value=go>\n";
|
print "<input type=hidden name=go value=go>\n";
|
||||||
print "<table border>\n";
|
print "<table border>\n";
|
||||||
print "<tr $cb> <td><table>\n";
|
print "<tr $cb> <td><table>\n";
|
||||||
print "<tr $cb> <td><font color=0000FF size=4><b>Display Options:</b></font></td></tr>\n";
|
print "<tr $cb> <td><font color=0000FF size=4><b>Display Options</b></font></td></tr>\n";
|
||||||
print "<tr $cb> <td><b>System</b></td> <td colspan=3>\n";
|
print "<tr $cb> <td><b>System</b></td> <td colspan=3>\n";
|
||||||
printf "<input type=radio name=system value=1 %s> %s\n",
|
printf "<input type=radio name=system value=1 %s> %s\n",
|
||||||
$System eq 1 ? 'checked' : '', $text{'yes'};
|
$System eq 1 ? 'checked' : '', $text{'yes'};
|
||||||
printf "<input type=radio name=system value=no %s> %s\n",
|
printf "<input type=radio name=system value=no %s> %s\n",
|
||||||
$System eq 1 ? '' : 'checked', $text{'no'},
|
$System eq 1 ? '' : 'checked', $text{'no'},
|
||||||
join(" ", $System),"</td> </tr>\n";
|
join(" ", $System),"</td></tr>\n";
|
||||||
|
|
||||||
print "<tr $cb> <td><b>Package</b></td> <td colspan=3>\n";
|
print "<tr $cb> <td><b>Package</b></td> <td colspan=3>\n";
|
||||||
printf "<input type=radio name=package value=1 %s> %s\n",
|
printf "<input type=radio name=package value=1 %s> %s\n",
|
||||||
$Package eq 1 ? 'checked' : '', $text{'yes'};
|
$Package eq 1 ? 'checked' : '', $text{'yes'};
|
||||||
printf "<input type=radio name=package value=no %s> %s\n",
|
printf "<input type=radio name=package value=no %s> %s\n",
|
||||||
$Package eq 1 ? '' : 'checked', $text{'no'},
|
$Package eq 1 ? '' : 'checked', $text{'no'},
|
||||||
join(" ", $Package),"</td> </tr>\n";
|
join(" ", $Package),"</td></tr>\n";
|
||||||
|
|
||||||
print "<tr $cb> <td><b>Main</b></td> <td colspan=3>\n";
|
print "<tr $cb> <td><b>Main</b></td> <td colspan=3>\n";
|
||||||
printf "<input type=radio name=main value=1 %s> %s\n",
|
printf "<input type=radio name=main value=1 %s> %s\n",
|
||||||
$Main eq 1 ? 'checked' : '', $text{'yes'};
|
$Main eq 1 ? 'checked' : '', $text{'yes'};
|
||||||
printf "<input type=radio name=main value=no %s> %s\n",
|
printf "<input type=radio name=main value=no %s> %s\n",
|
||||||
$Main eq 1 ? '' : 'checked', $text{'no'},
|
$Main eq 1 ? '' : 'checked', $text{'no'},
|
||||||
join(" ", $Main),"</td> </tr>\n";
|
join(" ", $Main),"</td></tr>\n";
|
||||||
|
|
||||||
print "<tr $cb> <td><b>Defaults in Main</b></td> <td colspan=3>\n";
|
print "<tr $cb> <td><b>Defaults in Main</b></td> <td colspan=3>\n";
|
||||||
printf "<input type=radio name=defaultsinmain value=1 %s> %s\n",
|
printf "<input type=radio name=defaultsinmain value=1 %s> %s\n",
|
||||||
$Defaultsinmain eq 1 ? 'checked' : '', $text{'yes'};
|
$Defaultsinmain eq 1 ? 'checked' : '', $text{'yes'};
|
||||||
printf "<input type=radio name=defaultsinmain value=no %s> %s\n",
|
printf "<input type=radio name=defaultsinmain value=no %s> %s\n",
|
||||||
$Defaultsinmain eq 1 ? '' : 'checked', $text{'no'},
|
$Defaultsinmain eq 1 ? '' : 'checked', $text{'no'},
|
||||||
join(" ", $Defaultsinmain),"</td> </tr>\n";
|
join(" ", $Defaultsinmain),"</td></tr>\n";
|
||||||
|
|
||||||
print "<tr $cb> <td><b>Master</b></td> <td colspan=3>\n";
|
print "<tr $cb> <td><b>Master</b></td> <td colspan=3>\n";
|
||||||
printf "<input type=radio name=master value=1 %s> %s\n",
|
printf "<input type=radio name=master value=1 %s> %s\n",
|
||||||
$Master eq 1 ? 'checked' : '', $text{'yes'};
|
$Master eq 1 ? 'checked' : '', $text{'yes'};
|
||||||
printf "<input type=radio name=master value=no %s> %s\n",
|
printf "<input type=radio name=master value=no %s> %s\n",
|
||||||
$Master eq 1 ? '' : 'checked', $text{'no'},
|
$Master eq 1 ? '' : 'checked', $text{'no'},
|
||||||
join(" ", $Master),"</td> </tr>\n";
|
join(" ", $Master),"</td></tr>\n";
|
||||||
|
|
||||||
print "<tr $cb> <td><b>Locking</b></td> <td colspan=3>\n";
|
print "<tr $cb> <td><b>Locking</b></td> <td colspan=3>\n";
|
||||||
printf "<input type=radio name=locking value=1 %s> %s\n",
|
printf "<input type=radio name=locking value=1 %s> %s\n",
|
||||||
$Locking eq 1 ? 'checked' : '', $text{'yes'};
|
$Locking eq 1 ? 'checked' : '', $text{'yes'};
|
||||||
printf "<input type=radio name=locking value=no %s> %s\n",
|
printf "<input type=radio name=locking value=no %s> %s\n",
|
||||||
$Locking eq 1 ? '' : 'checked', $text{'no'},
|
$Locking eq 1 ? '' : 'checked', $text{'no'},
|
||||||
join(" ", $Locking),"</td> </tr>\n";
|
join(" ", $Locking),"</td></tr>\n";
|
||||||
|
|
||||||
print "<tr $cb> <td><b>Tables</b></td> <td colspan=3>\n";
|
print "<tr $cb> <td><b>Tables</b></td> <td colspan=3>\n";
|
||||||
printf "<input type=radio name=tables value=1 %s> %s\n",
|
printf "<input type=radio name=tables value=1 %s> %s\n",
|
||||||
$Tables eq 1 ? 'checked' : '', $text{'yes'};
|
$Tables eq 1 ? 'checked' : '', $text{'yes'};
|
||||||
printf "<input type=radio name=tables value=no %s> %s\n",
|
printf "<input type=radio name=tables value=no %s> %s\n",
|
||||||
$Tables eq 1 ? '' : 'checked', $text{'no'},
|
$Tables eq 1 ? '' : 'checked', $text{'no'},
|
||||||
join(" ", $Tables),"</td> </tr>\n";
|
join(" ", $Tables),"</td></tr>\n";
|
||||||
|
|
||||||
print "<tr $cb> <td><b>Permissions</b></td> <td colspan=3>\n";
|
print "<tr $cb> <td><b>Permissions</b></td> <td colspan=3>\n";
|
||||||
printf "<input type=radio name=permissions value=1 %s> %s\n",
|
printf "<input type=radio name=permissions value=1 %s> %s\n",
|
||||||
$Permissions eq 1 ? 'checked' : '', $text{'yes'};
|
$Permissions eq 1 ? 'checked' : '', $text{'yes'};
|
||||||
printf "<input type=radio name=permissions value=no %s> %s\n",
|
printf "<input type=radio name=permissions value=no %s> %s\n",
|
||||||
$Permissions eq 1 ? '' : 'checked', $text{'no'},
|
$Permissions eq 1 ? '' : 'checked', $text{'no'},
|
||||||
join(" ", $Permissions),"</td> </tr>\n";
|
join(" ", $Permissions),"</td></tr>\n";
|
||||||
|
|
||||||
print "<tr $cb> <td><b>Libraries</b></td> <td colspan=3>\n";
|
print "<tr $cb> <td><b>Libraries</b></td> <td colspan=3>\n";
|
||||||
printf "<input type=radio name=libraries value=1 %s> %s\n",
|
printf "<input type=radio name=libraries value=1 %s> %s\n",
|
||||||
$Libraries eq 1 ? 'checked' : '', $text{'yes'};
|
$Libraries eq 1 ? 'checked' : '', $text{'yes'};
|
||||||
printf "<input type=radio name=libraries value=no %s> %s\n",
|
printf "<input type=radio name=libraries value=no %s> %s\n",
|
||||||
$Libraries eq 1 ? '' : 'checked', $text{'no'},
|
$Libraries eq 1 ? '' : 'checked', $text{'no'},
|
||||||
join(" ", $Libraries),"</td> </tr>\n";
|
join(" ", $Libraries),"</td></tr>\n";
|
||||||
|
|
||||||
print "<tr $cb> <td><b>Warn</b></td> <td colspan=3>\n";
|
print "<tr $cb> <td><b>Warn</b></td> <td colspan=3>\n";
|
||||||
printf "<input type=radio name=warn value=1 %s> %s\n",
|
printf "<input type=radio name=warn value=1 %s> %s\n",
|
||||||
$Warn eq 1 ? 'checked' : '', $text{'yes'};
|
$Warn eq 1 ? 'checked' : '', $text{'yes'};
|
||||||
printf "<input type=radio name=warn value=no %s> %s\n",
|
printf "<input type=radio name=warn value=no %s> %s\n",
|
||||||
$Warn eq 1 ? '' : 'checked', $text{'no'},
|
$Warn eq 1 ? '' : 'checked', $text{'no'},
|
||||||
join(" ", $Warn),"</td> </tr>\n";
|
join(" ", $Warn),"</td></tr>\n";
|
||||||
print "<tr><td> </td></tr><tr><td><input type=submit value=\"$text{'postfinger_show'}\"></td></tr></form>\n";
|
print "<tr><td></td></tr><tr><td><input type=submit value=\"$text{'postfinger_show'}\"></td></tr></form>\n";
|
||||||
|
|
||||||
print "</table></td> </tr></table>";
|
print "</table></td></tr></table>";
|
||||||
&footer("index.cgi", $text{'index_title'});
|
&ui_print_footer("index.cgi", $text{'index_title'});
|
||||||
} else {
|
} else {
|
||||||
&head;
|
&head;
|
||||||
if (! -x $config{'postfix_config_command'} && ! -r $config{'postfix_config_file'} ) {
|
if (! -x $config{'postfix_config_command'} && ! -r $config{'postfix_config_file'} ) {
|
||||||
@@ -108,7 +108,7 @@ if ( !$in{'go'} ) {
|
|||||||
if ($config{'index_check'} && ($err = &check_postfix())) {
|
if ($config{'index_check'} && ($err = &check_postfix())) {
|
||||||
print "<p>",&text('check_error'),"<p>\n";
|
print "<p>",&text('check_error'),"<p>\n";
|
||||||
print "<pre>$err</pre>\n";
|
print "<pre>$err</pre>\n";
|
||||||
&footer("/", $text{'index'});
|
&ui_print_footer("/", $text{'index'});
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
if ($System eq 1 ) {
|
if ($System eq 1 ) {
|
||||||
@@ -197,16 +197,16 @@ if ( !$in{'go'} ) {
|
|||||||
while (my $postfinger = <MAILQ>) {
|
while (my $postfinger = <MAILQ>) {
|
||||||
($postf1,$postf2,$postf3,$postf4,$postf5,$postf6,$postf7,$postf8)=split(/\s+/,$postfinger,8);
|
($postf1,$postf2,$postf3,$postf4,$postf5,$postf6,$postf7,$postf8)=split(/\s+/,$postfinger,8);
|
||||||
if ($postfinger =~ /\-o/) {
|
if ($postfinger =~ /\-o/) {
|
||||||
print "<tr><td class='e'> </td><td class='v'> </td>",
|
print "<tr><td class='e'></td><td class='v'></td>",
|
||||||
"<td class='v'> </td><td class='v'> </td>",
|
"<td class='v'></td><td class='v'></td>",
|
||||||
"<td class='v'> </td><td class='v'> </td>",
|
"<td class='v'></td><td class='v'></td>",
|
||||||
"<td class='v'> </td><td class='v'>$postf2</td></tr>"
|
"<td class='v'></td><td class='v'>$postf2</td></tr>"
|
||||||
if ( !grep(/^#|^\[ \]*$/,$postfinger));
|
if ( !grep(/^#|^\[ \]*$/,$postfinger));
|
||||||
} elsif ($postfinger =~ /user=/) {
|
} elsif ($postfinger =~ /user=/) {
|
||||||
print "<tr><td class='e'> </td><td class='v'> </td>",
|
print "<tr><td class='e'></td><td class='v'></td>",
|
||||||
"<td class='v'> </td><td class='v'> </td>",
|
"<td class='v'></td><td class='v'></td>",
|
||||||
"<td class='v'> </td><td class='v'> </td>",
|
"<td class='v'></td><td class='v'></td>",
|
||||||
"<td class='v'> </td><td class='v'>$postf1</td></tr>"
|
"<td class='v'></td><td class='v'>$postf1</td></tr>"
|
||||||
if ( !grep(/^#|^\[ \]*$/,$postfinger));
|
if ( !grep(/^#|^\[ \]*$/,$postfinger));
|
||||||
} else {
|
} else {
|
||||||
print "<tr><td class='e'><b>$postf1</b></td><td class='v'><center>$postf2</center></td>",
|
print "<tr><td class='e'><b>$postf1</b></td><td class='v'><center>$postf2</center></td>",
|
||||||
@@ -223,21 +223,21 @@ if ( !$in{'go'} ) {
|
|||||||
if ($Permissions eq 1 ) {
|
if ($Permissions eq 1 ) {
|
||||||
print '<h1 align="center">Specific file and directory permissions</h1><br>';
|
print '<h1 align="center">Specific file and directory permissions</h1><br>';
|
||||||
print '<table border="0" cellpadding="0" width="600" align="center">';
|
print '<table border="0" cellpadding="0" width="600" align="center">';
|
||||||
print "<tr><td class='e'><b>Permission</b> Deep <b>Owner</b> <b>Group</b> Size Date <b>Directory/File</b> </td></tr>";
|
print "<tr><td class='e'><b>Permission</b> Deep <b>Owner</b> <b>Group</b> Size Date <b>Directory/File</b></td></tr>";
|
||||||
open(MAILQ, "/bin/ls -ld `$config{'postfix_config_command'} -h queue_directory`/maildrop 2>/dev/null |");
|
open(MAILQ, "/bin/ls -ld `$config{'postfix_config_command'} -h queue_directory`/maildrop 2>/dev/null |");
|
||||||
while (my $postfinger = <MAILQ>) {
|
while (my $postfinger = <MAILQ>) {
|
||||||
print "<tr><td class='v'>$postfinger</td></tr>"
|
print "<tr><td class='v'>$postfinger</td></tr>"
|
||||||
if ( !grep(/total|^#|^\[ \]*$/,$postfinger));
|
if ( !grep(/total|^#|^\[ \]*$/,$postfinger));
|
||||||
}
|
}
|
||||||
close(MAILQ);
|
close(MAILQ);
|
||||||
print "<tr><td> </td></tr>";
|
print "<tr><td></td></tr>";
|
||||||
open(MAILQ, "/bin/ls -ld `$config{'postfix_config_command'} -h queue_directory`/public 2>/dev/null |");
|
open(MAILQ, "/bin/ls -ld `$config{'postfix_config_command'} -h queue_directory`/public 2>/dev/null |");
|
||||||
while (my $postfinger = <MAILQ>) {
|
while (my $postfinger = <MAILQ>) {
|
||||||
print "<tr><td class='v'>$postfinger</td></tr>"
|
print "<tr><td class='v'>$postfinger</td></tr>"
|
||||||
if ( !grep(/total|^#|^\[ \]*$/,$postfinger));
|
if ( !grep(/total|^#|^\[ \]*$/,$postfinger));
|
||||||
}
|
}
|
||||||
close(MAILQ);
|
close(MAILQ);
|
||||||
print "<tr><td> </td></tr>";
|
print "<tr><td></td></tr>";
|
||||||
if (! open(MAILQ, "/bin/ls -l `$config{'postfix_config_command'} -h queue_directory`/public 2>/dev/null |")) {
|
if (! open(MAILQ, "/bin/ls -l `$config{'postfix_config_command'} -h queue_directory`/public 2>/dev/null |")) {
|
||||||
print '<center><b>WARNING: No access to $queue_directory/public<br>Try running postfinger as user root or postfix</b></center><br>';
|
print '<center><b>WARNING: No access to $queue_directory/public<br>Try running postfinger as user root or postfix</b></center><br>';
|
||||||
} else {
|
} else {
|
||||||
@@ -246,7 +246,7 @@ if ( !$in{'go'} ) {
|
|||||||
if ( !grep(/total|^#|^\[ \]*$/,$postfinger));
|
if ( !grep(/total|^#|^\[ \]*$/,$postfinger));
|
||||||
}
|
}
|
||||||
close(MAILQ);
|
close(MAILQ);
|
||||||
print "<tr><td> </td></tr>";
|
print "<tr><td></td></tr>";
|
||||||
}
|
}
|
||||||
open(MAILQ, "/bin/ls -ld `$config{'postfix_config_command'} -h queue_directory`/private 2>/dev/null |");
|
open(MAILQ, "/bin/ls -ld `$config{'postfix_config_command'} -h queue_directory`/private 2>/dev/null |");
|
||||||
while (my $postfinger = <MAILQ>) {
|
while (my $postfinger = <MAILQ>) {
|
||||||
@@ -254,7 +254,7 @@ if ( !$in{'go'} ) {
|
|||||||
if ( !grep(/total|^#|^\[ \]*$/,$postfinger));
|
if ( !grep(/total|^#|^\[ \]*$/,$postfinger));
|
||||||
}
|
}
|
||||||
close(MAILQ);
|
close(MAILQ);
|
||||||
print "<tr><td> </td></tr>";
|
print "<tr><td></td></tr>";
|
||||||
if (! open(MAILQ, "/bin/ls -l `$config{'postfix_config_command'} -h queue_directory`/private 2>/dev/null |")) {
|
if (! open(MAILQ, "/bin/ls -l `$config{'postfix_config_command'} -h queue_directory`/private 2>/dev/null |")) {
|
||||||
print '<center><b>WARNING: No access to $queue_directory/private<br>Try running postfinger as user root or postfix</b></center><br>';
|
print '<center><b>WARNING: No access to $queue_directory/private<br>Try running postfinger as user root or postfix</b></center><br>';
|
||||||
} else {
|
} else {
|
||||||
@@ -263,7 +263,7 @@ if ( !$in{'go'} ) {
|
|||||||
if ( !grep(/total|^#|^\[ \]*$/,$postfinger));
|
if ( !grep(/total|^#|^\[ \]*$/,$postfinger));
|
||||||
}
|
}
|
||||||
close(MAILQ);
|
close(MAILQ);
|
||||||
print "<tr><td> </td></tr>";
|
print "<tr><td></td></tr>";
|
||||||
}
|
}
|
||||||
open(MAILQ, "/bin/ls -l `$config{'postfix_config_command'} -h command_directory`/postdrop 2>/dev/null |");
|
open(MAILQ, "/bin/ls -l `$config{'postfix_config_command'} -h command_directory`/postdrop 2>/dev/null |");
|
||||||
while (my $postfinger = <MAILQ>) {
|
while (my $postfinger = <MAILQ>) {
|
||||||
@@ -271,7 +271,7 @@ if ( !$in{'go'} ) {
|
|||||||
if ( !grep(/total|^#|^\[ \]*$/,$postfinger));
|
if ( !grep(/total|^#|^\[ \]*$/,$postfinger));
|
||||||
}
|
}
|
||||||
close(MAILQ);
|
close(MAILQ);
|
||||||
print "<tr><td> </td></tr>";
|
print "<tr><td></td></tr>";
|
||||||
open(MAILQ, "/bin/ls -l `$config{'postfix_config_command'} -h command_directory`/postqueue 2>/dev/null |");
|
open(MAILQ, "/bin/ls -l `$config{'postfix_config_command'} -h command_directory`/postqueue 2>/dev/null |");
|
||||||
while (my $postfinger = <MAILQ>) {
|
while (my $postfinger = <MAILQ>) {
|
||||||
print "<tr><td class='v'>$postfinger</td></tr>"
|
print "<tr><td class='v'>$postfinger</td></tr>"
|
||||||
@@ -295,8 +295,8 @@ if ( !$in{'go'} ) {
|
|||||||
print "</table><br>";
|
print "</table><br>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print "</td> </tr></table></td> </tr></table>";
|
print "</td></tr></table></td></tr></table>";
|
||||||
&footer("index.cgi", $text{'index_title'});
|
&ui_print_footer("index.cgi", $text{'index_title'});
|
||||||
}
|
}
|
||||||
|
|
||||||
sub head {
|
sub head {
|
||||||
|
|||||||
@@ -10,23 +10,22 @@ if (defined(&get_cpu_info)) {
|
|||||||
print "<table>\n";
|
print "<table>\n";
|
||||||
@c = &get_cpu_info();
|
@c = &get_cpu_info();
|
||||||
if (@c) {
|
if (@c) {
|
||||||
print "<tr> <td><b>$text{'index_loadname'}</b></td>\n";
|
print &ui_table_start(undef, undef, 2);
|
||||||
print "<td>",&text('index_loadnums',
|
print &ui_table_row($text{'index_loadname'},
|
||||||
"<tt>$c[0]</tt>", "<tt>$c[1]</tt>", "<tt>$c[2]</tt>"),
|
&text('index_loadnums',
|
||||||
"</td> </tr>\n";
|
"<tt>$c[0]</tt>", "<tt>$c[1]</tt>", "<tt>$c[2]</tt>"));
|
||||||
if (@c >= 5) {
|
if (@c >= 5) {
|
||||||
print "<tr> <td><b>$text{'index_cpuname'}</b></td>\n";
|
my $cpu = $c[4]."\n";
|
||||||
print "<td>$c[4]\n";
|
|
||||||
if ($c[4] !~ /Hz/) {
|
if ($c[4] !~ /Hz/) {
|
||||||
print "($c[3] MHz)\n";
|
$cpu .= "($c[3] MHz)\n";
|
||||||
}
|
}
|
||||||
if ($c[7]) {
|
if ($c[7]) {
|
||||||
print ", $c[7] cores\n";
|
$cpu .= ", $c[7] cores\n";
|
||||||
}
|
}
|
||||||
print "</td> </tr>\n";
|
print &ui_table_row($text{'index_cpuname'}, $cpu);
|
||||||
}
|
}
|
||||||
|
print &ui_table_end(),"<p>\n";
|
||||||
}
|
}
|
||||||
print "</table><br>\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
print &ui_columns_start([ $text{'pid'}, $text{'owner'},
|
print &ui_columns_start([ $text{'pid'}, $text{'owner'},
|
||||||
|
|||||||
@@ -9,17 +9,20 @@ if (defined(&get_memory_info)) {
|
|||||||
@m = &get_memory_info();
|
@m = &get_memory_info();
|
||||||
if (@m) {
|
if (@m) {
|
||||||
$msg = $m[4] ? 'index_mem3' : 'index_mem2';
|
$msg = $m[4] ? 'index_mem3' : 'index_mem2';
|
||||||
print "<p>";
|
print &ui_table_start(undef, undef, 2);
|
||||||
print &text($msg, &nice_size($m[0]*1024),
|
print &ui_table_row($text{'index_memreal'},
|
||||||
&nice_size($m[1]*1024),
|
&text($m[4] ? 'index_memtfc' : 'index_memtf',
|
||||||
&nice_size($m[4]*1024)),"\n";
|
&nice_size($m[0]*1024),
|
||||||
|
&nice_size($m[1]*1024),
|
||||||
|
&nice_size($m[4]*1024)));
|
||||||
if ($m[5]) {
|
if ($m[5]) {
|
||||||
print " ",
|
print &ui_table_row($text{'index_memburst'},
|
||||||
&text('index_burst', &nice_size($m[5]*1024));
|
&nice_size($m[5]*1024));
|
||||||
}
|
}
|
||||||
print " ",
|
print &ui_table_row($text{'index_memswap'},
|
||||||
&text('index_swap2', &nice_size($m[2]*1024),
|
&text('index_memtf', &nice_size($m[2]*1024),
|
||||||
&nice_size($m[3]*1024)),"<p>\n";
|
&nice_size($m[3]*1024)));
|
||||||
|
print &ui_table_end(),"<p>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print &ui_columns_start([
|
print &ui_columns_start([
|
||||||
|
|||||||
@@ -8,10 +8,11 @@ index_search=Search
|
|||||||
index_zone=Zone
|
index_zone=Zone
|
||||||
index_run=Run..
|
index_run=Run..
|
||||||
index_return=process list
|
index_return=process list
|
||||||
index_mem2=<b>Real memory:</b> $1 total / $2 free
|
index_memreal=Real memory:
|
||||||
index_mem3=<b>Real memory:</b> $1 total / $2 free / $3 cached
|
index_memswap=Swap space:
|
||||||
index_swap2=<b>Swap space:</b> $1 total / $2 free
|
index_memburst=Burstable memory:
|
||||||
index_burst=<b>Burstable memory:</b> $1 total
|
index_memtf=$1 total / $2 free
|
||||||
|
index_memtfc=$1 total / $2 free / $3 cached
|
||||||
index_loadname=CPU load averages:
|
index_loadname=CPU load averages:
|
||||||
index_loadnums=$1 (1 mins) , $2 (5 mins) , $3 (15 mins)
|
index_loadnums=$1 (1 mins) , $2 (5 mins) , $3 (15 mins)
|
||||||
index_cpuname=CPU type:
|
index_cpuname=CPU type:
|
||||||
|
|||||||
@@ -66,7 +66,8 @@ else {
|
|||||||
# Use width format character if allowed
|
# Use width format character if allowed
|
||||||
$width = ":80";
|
$width = ":80";
|
||||||
}
|
}
|
||||||
open(PS, "ps --cols 2048 -eo user$width,ruser$width,group$width,rgroup$width,pid,ppid,pgid,pcpu,rss,nice,etime,time,stime,tty,args 2>/dev/null |");
|
my $pscmd = "ps --cols 2048 -eo user$width,ruser$width,group$width,rgroup$width,pid,ppid,pgid,pcpu,rss,nice,etime,time,stime,tty,args";
|
||||||
|
open(PS, "$pscmd 2>/dev/null |");
|
||||||
$dummy = <PS>;
|
$dummy = <PS>;
|
||||||
my @now = localtime(time());
|
my @now = localtime(time());
|
||||||
for($i=0; $line=<PS>; $i++) {
|
for($i=0; $line=<PS>; $i++) {
|
||||||
@@ -116,6 +117,7 @@ else {
|
|||||||
$plist[$i]->{"_rgroup"} = $w[3];
|
$plist[$i]->{"_rgroup"} = $w[3];
|
||||||
$plist[$i]->{"_pgid"} = $w[6];
|
$plist[$i]->{"_pgid"} = $w[6];
|
||||||
$plist[$i]->{"_tty"} = $w[13] =~ /\?/ ? $text{'edit_none'} : "/dev/$w[13]";
|
$plist[$i]->{"_tty"} = $w[13] =~ /\?/ ? $text{'edit_none'} : "/dev/$w[13]";
|
||||||
|
$plist[$i]->{"_pscmd"} = 1 if ($plist[$i]->{"args"} =~ /\Q$pscmd\E/);
|
||||||
}
|
}
|
||||||
close(PS);
|
close(PS);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -195,7 +195,7 @@ else {
|
|||||||
local $sel = select($rmask, undef, undef, 1);
|
local $sel = select($rmask, undef, undef, 1);
|
||||||
if ($sel > 0 && vec($rmask, $fn, 1)) {
|
if ($sel > 0 && vec($rmask, $fn, 1)) {
|
||||||
# got something to read.. print it
|
# got something to read.. print it
|
||||||
sysread(OUTr, $buf, 65536) || last;
|
sysread(OUTr, $buf, &get_buffer_size()) || last;
|
||||||
$got += length($buf);
|
$got += length($buf);
|
||||||
if ($_[5]) {
|
if ($_[5]) {
|
||||||
$buf = &html_escape($buf);
|
$buf = &html_escape($buf);
|
||||||
@@ -584,6 +584,7 @@ sub can_view_process
|
|||||||
{
|
{
|
||||||
local ($p) = @_;
|
local ($p) = @_;
|
||||||
return 0 if ($p->{'pid'} == $$ && $config{'hide_self'});
|
return 0 if ($p->{'pid'} == $$ && $config{'hide_self'});
|
||||||
|
return 0 if ($p->{'_pscmd'} && $config{'hide_self'});
|
||||||
local $user = $p->{'user'};
|
local $user = $p->{'user'};
|
||||||
if ($hide{$user}) {
|
if ($hide{$user}) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -1,3 +1,2 @@
|
|||||||
line2=System configuration,11
|
|
||||||
stunnel_path=Path to stunnel executable,0
|
stunnel_path=Path to stunnel executable,0
|
||||||
pem_path=Path to default stunnel PEM file,3,None
|
pem_path=Path to default stunnel PEM file,3,None
|
||||||
|
|||||||
@@ -1305,7 +1305,7 @@ return "<textarea class='ui_textarea' ".
|
|||||||
"rows='$rows' cols='$cols'".($wrap ? " wrap='$wrap'" : "").
|
"rows='$rows' cols='$cols'".($wrap ? " wrap='$wrap'" : "").
|
||||||
($dis ? " disabled='true'" : "").
|
($dis ? " disabled='true'" : "").
|
||||||
($tags ? " $tags" : "").">".
|
($tags ? " $tags" : "").">".
|
||||||
&html_escape($value).
|
&html_escape($value, 1).
|
||||||
"</textarea>";
|
"</textarea>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -99,17 +99,21 @@ if ($ENV{'PATH_INFO'}) {
|
|||||||
print "Content-Disposition: Attachment\n";
|
print "Content-Disposition: Attachment\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
while(read(FILE, $buffer, &get_buffer_size_binary())) {
|
|
||||||
$fdata .= $buffer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close(FILE);
|
|
||||||
|
|
||||||
print "Content-length: $fsize\n";
|
print "Content-length: $fsize\n";
|
||||||
print "X-Content-Type-Options: nosniff\n";
|
print "X-Content-Type-Options: nosniff\n";
|
||||||
print "Content-type: $type\n\n";
|
print "Content-type: $type\n\n";
|
||||||
print "$fdata";
|
# File is already read, so print it
|
||||||
|
if ($dangertypes) {
|
||||||
|
print "$fdata";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# Send the file
|
||||||
|
while(read(FILE, $buffer, &get_buffer_size_binary())) {
|
||||||
|
print("$buffer");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close(FILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Switch back to root
|
# Switch back to root
|
||||||
|
|||||||
@@ -32,8 +32,9 @@ $ttable .= &ui_columns_end();
|
|||||||
print &ui_table_row($text{'advanced_tempmods'}, $ttable);
|
print &ui_table_row($text{'advanced_tempmods'}, $ttable);
|
||||||
|
|
||||||
# Pass passwords to CGI programs
|
# Pass passwords to CGI programs
|
||||||
print &ui_table_row($text{'advanced_pass'},
|
print &ui_table_row($text{'advanced_pass_desc'},
|
||||||
&ui_yesno_radio("pass", int($miniserv{'pass_password'})));
|
&ui_yesno_radio("pass", int($miniserv{'pass_password'})).
|
||||||
|
&ui_help($text{'advanced_pass_help'}));
|
||||||
|
|
||||||
@preloads = &webmin::get_preloads(\%miniserv);
|
@preloads = &webmin::get_preloads(\%miniserv);
|
||||||
if (!@preloads && (!$miniserv{'premodules'} ||
|
if (!@preloads && (!$miniserv{'premodules'} ||
|
||||||
|
|||||||
@@ -486,7 +486,8 @@ descs_title=Module Titles
|
|||||||
descs_info=This page allows you to specify alternate titles for Usermin modules, to override their standard descriptions.
|
descs_info=This page allows you to specify alternate titles for Usermin modules, to override their standard descriptions.
|
||||||
|
|
||||||
advanced_title=Advanced Options
|
advanced_title=Advanced Options
|
||||||
advanced_pass=Make password available to Usermin programs?<br><font size=-1>(Does not work when session authentication is enabled)</font>
|
advanced_pass_desc=Make password available to Usermin programs?
|
||||||
|
advanced_pass_help=Does not work when session authentication is enabled
|
||||||
|
|
||||||
blocked_title=Blocked Hosts and Users
|
blocked_title=Blocked Hosts and Users
|
||||||
blocked_none=No hosts or users are currently blocked by Usermin.
|
blocked_none=No hosts or users are currently blocked by Usermin.
|
||||||
|
|||||||
@@ -84,12 +84,12 @@ elsif ($in{'source'} == 2) {
|
|||||||
if ($in{'mode'} eq 'rpm') {
|
if ($in{'mode'} eq 'rpm') {
|
||||||
$release ||= 1;
|
$release ||= 1;
|
||||||
$progress_callback_url = &convert_osdn_url(
|
$progress_callback_url = &convert_osdn_url(
|
||||||
"http://$webmin::osdn_host/webadmin/${product}-${version}-${release}.noarch.rpm");
|
"http://$webmin::osdn_host/webadmin/newkey-${product}-${version}-${release}.noarch.rpm");
|
||||||
}
|
}
|
||||||
elsif ($in{'mode'} eq 'deb') {
|
elsif ($in{'mode'} eq 'deb') {
|
||||||
$release = $release ? "-".$release : "";
|
$release = $release ? "-".$release : "";
|
||||||
$progress_callback_url = &convert_osdn_url(
|
$progress_callback_url = &convert_osdn_url(
|
||||||
"http://$webmin::osdn_host/webadmin/${product}_${version}${release}_all.deb");
|
"http://$webmin::osdn_host/webadmin/newkey-${product}_${version}${release}_all.deb");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$release = $release ? "-".$release : "";
|
$release = $release ? "-".$release : "";
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ if ($sorted_by && $sorted_by_sectioning_preserved) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
=head2 html_escape(string)
|
=head2 html_escape(string, [editor-mode])
|
||||||
|
|
||||||
Converts &, < and > codes in text to HTML entities, and returns the new string.
|
Converts &, < and > codes in text to HTML entities, and returns the new string.
|
||||||
This should be used when including data read from other sources in HTML pages.
|
This should be used when including data read from other sources in HTML pages.
|
||||||
@@ -250,13 +250,16 @@ This should be used when including data read from other sources in HTML pages.
|
|||||||
=cut
|
=cut
|
||||||
sub html_escape
|
sub html_escape
|
||||||
{
|
{
|
||||||
my ($tmp) = @_;
|
my ($tmp, $editor_mode) = @_;
|
||||||
if (!defined $tmp) {
|
if (!defined $tmp) {
|
||||||
return ''; # empty string
|
return ''; # empty string
|
||||||
};
|
};
|
||||||
# Before escaping ampersand use negative lookahead to see if occurrence
|
# Before escaping ampersand use negative lookahead to see if occurrence
|
||||||
# is not an HTML entity already to prevent double escaping
|
# is not an HTML entity already to prevent double escaping
|
||||||
$tmp =~ s/&(?!(([a-zA-Z]+)|(#|#x)\d+);)/&/g;
|
$tmp =~ s/&(?!(([a-zA-Z]+)|(#|#x)\d+);)/&/g if (!$editor_mode);
|
||||||
|
# In editor mode always escape all ampersands
|
||||||
|
# to make sure they are displayed per se
|
||||||
|
$tmp =~ s/&/&/g if ($editor_mode);
|
||||||
# Just always escape the following
|
# Just always escape the following
|
||||||
$tmp =~ s/</</g;
|
$tmp =~ s/</</g;
|
||||||
$tmp =~ s/>/>/g;
|
$tmp =~ s/>/>/g;
|
||||||
@@ -1694,13 +1697,27 @@ for(my $i=0; my @stack_ = caller($i); $i++) {
|
|||||||
push(@stack, \@stack_);
|
push(@stack, \@stack_);
|
||||||
}
|
}
|
||||||
my $err_caller;
|
my $err_caller;
|
||||||
$err_caller = "$stack[1]->[1] (line $stack[1]->[2])"
|
my $err_last_eval = $main::error_last_eval;
|
||||||
if ($stack[1]->[1] && $stack[1]->[2]);
|
$err_last_eval =~ s/\n$// if ($err_last_eval);
|
||||||
|
$err_caller = "$stack[0]->[1] (line $stack[0]->[2])"
|
||||||
|
if ($stack[0]->[1] && $stack[0]->[2]);
|
||||||
if ($err_caller) {
|
if ($err_caller) {
|
||||||
$err_caller =~ s/$root_directory\///;
|
$err_caller =~ s/$root_directory\///;
|
||||||
|
my $err_caller_msg_esc =
|
||||||
|
"e_escape(($err_last_eval ? "$err_last_eval : $err_caller" : $err_caller), '"');
|
||||||
|
my $err_caller_msg;
|
||||||
|
if ($err_last_eval) {
|
||||||
|
$err_caller_msg = &ui_details({
|
||||||
|
'title' => $text{'main_error_details'},
|
||||||
|
'content' => $err_caller_msg_esc,
|
||||||
|
'class' =>'error'}, 1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$err_caller_msg = &ui_help($err_caller_msg_esc);
|
||||||
|
}
|
||||||
my $err_caller_ =
|
my $err_caller_ =
|
||||||
$main::webmin_script_type =~ /^(cmd|cron)$/ ?
|
$main::webmin_script_type =~ /^(cmd|cron)$/ ?
|
||||||
$err_caller : &ui_help($err_caller);
|
$err_caller : $err_caller_msg;
|
||||||
$msg = $msg ? "$msg $err_caller_" : $err_caller_;
|
$msg = $msg ? "$msg $err_caller_" : $err_caller_;
|
||||||
push(@msg, $err_caller_);
|
push(@msg, $err_caller_);
|
||||||
}
|
}
|
||||||
@@ -1710,7 +1727,7 @@ my $error_output_right = sub {
|
|||||||
return $main::webmin_script_type eq 'cmd' ? entities_to_ascii($err_msg) : $err_msg;
|
return $main::webmin_script_type eq 'cmd' ? entities_to_ascii($err_msg) : $err_msg;
|
||||||
};
|
};
|
||||||
if (!$main::error_must_die) {
|
if (!$main::error_must_die) {
|
||||||
print STDERR "Error: ", &$error_output_right($msg), "\n";
|
&error_stderr(&$error_output_right($msg));
|
||||||
}
|
}
|
||||||
&load_theme_library();
|
&load_theme_library();
|
||||||
if ($main::error_must_die) {
|
if ($main::error_must_die) {
|
||||||
@@ -1827,6 +1844,7 @@ $remove_host = $ENV{"REMOTE_HOST"};
|
|||||||
$page = $ENV{"REQUEST_URI"};
|
$page = $ENV{"REQUEST_URI"};
|
||||||
$err = &html_strip($err);
|
$err = &html_strip($err);
|
||||||
$err =~ s/[\n\r]+/ /g;
|
$err =~ s/[\n\r]+/ /g;
|
||||||
|
$err =~ s/\s\?$//g;
|
||||||
$err =
|
$err =
|
||||||
"[$make_datestr] " .
|
"[$make_datestr] " .
|
||||||
($remove_host ? ( "[$remove_host] " ) : ( )) .
|
($remove_host ? ( "[$remove_host] " ) : ( )) .
|
||||||
@@ -7221,6 +7239,12 @@ if ($filename && $filename_) {
|
|||||||
$filename =~ tr/A-Za-z0-9\_\-//cd;
|
$filename =~ tr/A-Za-z0-9\_\-//cd;
|
||||||
$filename = "$filename--";
|
$filename = "$filename--";
|
||||||
}
|
}
|
||||||
|
state $check_header;
|
||||||
|
my $check_headers = sub {
|
||||||
|
if (!$check_header++ && !$main::done_webmin_header) {
|
||||||
|
print "Content-type: text/html\n\n";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
eval 'use Data::Dumper';
|
eval 'use Data::Dumper';
|
||||||
if (!$@) {
|
if (!$@) {
|
||||||
@@ -7252,7 +7276,8 @@ if (!$@) {
|
|||||||
$dumped_data =~ s/\n/<br>/g;
|
$dumped_data =~ s/\n/<br>/g;
|
||||||
$dumped_data =~ s/\s/ /g;
|
$dumped_data =~ s/\s/ /g;
|
||||||
}
|
}
|
||||||
print $dumped_data;
|
&$check_headers();
|
||||||
|
$objref && print $dumped_data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -7263,7 +7288,8 @@ else {
|
|||||||
}
|
}
|
||||||
# Print on screen
|
# Print on screen
|
||||||
else {
|
else {
|
||||||
print Dumper($dumpererr);
|
&$check_headers();
|
||||||
|
$objref && print Dumper($dumpererr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12832,7 +12858,7 @@ sub get_buffer_size_binary
|
|||||||
{
|
{
|
||||||
my %miniserv;
|
my %miniserv;
|
||||||
&get_miniserv_config(\%miniserv);
|
&get_miniserv_config(\%miniserv);
|
||||||
return $miniserv{'bufsize_binary'} || (65536 * 100);
|
return $miniserv{'bufsize_binary'} || 1048576;
|
||||||
}
|
}
|
||||||
|
|
||||||
=head2 get_webprefix
|
=head2 get_webprefix
|
||||||
|
|||||||
@@ -34,5 +34,12 @@ if (!$done_web_lib_funcs) {
|
|||||||
$remote_error_handler ||= \&error;
|
$remote_error_handler ||= \&error;
|
||||||
$main::remote_error_handler ||= \&error;
|
$main::remote_error_handler ||= \&error;
|
||||||
|
|
||||||
|
# Die handler that stores the error from
|
||||||
|
# eval message in a global variable
|
||||||
|
$SIG{__DIE__} = sub {
|
||||||
|
# Don't meddle with the natural functioning of eval.
|
||||||
|
$main::error_last_eval = $_[0] if (!$^S);
|
||||||
|
};
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
|
|||||||
@@ -118,6 +118,16 @@ else {
|
|||||||
$miniserv{'bufsize'} = $in{'bufsize'};
|
$miniserv{'bufsize'} = $in{'bufsize'};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Save buffer size
|
||||||
|
if ($in{'bufsize_binary_def'}) {
|
||||||
|
delete($miniserv{'bufsize_binary'});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$in{'bufsize_binary'} =~ /^\d+$/ && $in{'bufsize_binary'} > 0 ||
|
||||||
|
&error($text{'advanced_ebufsize_binary'});
|
||||||
|
$miniserv{'bufsize_binary'} = $in{'bufsize_binary'};
|
||||||
|
}
|
||||||
|
|
||||||
&lock_file($ENV{'MINISERV_CONFIG'});
|
&lock_file($ENV{'MINISERV_CONFIG'});
|
||||||
&put_miniserv_config(\%miniserv);
|
&put_miniserv_config(\%miniserv);
|
||||||
&unlock_file($ENV{'MINISERV_CONFIG'});
|
&unlock_file($ENV{'MINISERV_CONFIG'});
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ updays=1
|
|||||||
cron_mode=0
|
cron_mode=0
|
||||||
osdn=1
|
osdn=1
|
||||||
warn_days=7
|
warn_days=7
|
||||||
letsencrypt_dns_wait=10
|
letsencrypt_dns_wait=30
|
||||||
letsencrypt_algo=rsa
|
letsencrypt_algo=rsa
|
||||||
letsencrypt_reuse=1
|
letsencrypt_reuse=1
|
||||||
@@ -78,6 +78,11 @@ print &ui_table_row($text{'advanced_bufsize'},
|
|||||||
&ui_opt_textbox("bufsize", $miniserv{'bufsize'}, 6,
|
&ui_opt_textbox("bufsize", $miniserv{'bufsize'}, 6,
|
||||||
$text{'default'}." (32768)"));
|
$text{'default'}." (32768)"));
|
||||||
|
|
||||||
|
# Network download buffer size
|
||||||
|
print &ui_table_row($text{'advanced_bufsize_binary'},
|
||||||
|
&ui_opt_textbox("bufsize_binary", $miniserv{'bufsize_binary'}, 6,
|
||||||
|
$text{'default'}." (1048576)"));
|
||||||
|
|
||||||
# Nice level for cron jobs
|
# Nice level for cron jobs
|
||||||
if (&foreign_check("proc")) {
|
if (&foreign_check("proc")) {
|
||||||
&foreign_require("proc", "proc-lib.pl");
|
&foreign_require("proc", "proc-lib.pl");
|
||||||
|
|||||||
@@ -58,8 +58,9 @@ print &ui_table_row($text{'advanced_showstderr'},
|
|||||||
|
|
||||||
if (!$miniserv{'session'}) {
|
if (!$miniserv{'session'}) {
|
||||||
# Pass passwords to CGI programs
|
# Pass passwords to CGI programs
|
||||||
print &ui_table_row($text{'advanced_pass'},
|
print &ui_table_row($text{'advanced_pass_desc'},
|
||||||
&ui_yesno_radio("pass", int($miniserv{'pass_password'})), undef);
|
&ui_yesno_radio("pass", int($miniserv{'pass_password'})).
|
||||||
|
&ui_help($text{'advanced_pass_help'}), undef);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Gzip static files?
|
# Gzip static files?
|
||||||
|
|||||||
@@ -884,7 +884,8 @@ advanced_err=Failed to save advanced options
|
|||||||
advanced_etemp=Missing or non-existant temporary files directory
|
advanced_etemp=Missing or non-existant temporary files directory
|
||||||
advanced_etdir=Missing or non-existant temporary files directory for $1
|
advanced_etdir=Missing or non-existant temporary files directory for $1
|
||||||
advanced_etempallowed=Temporary files directory $1 is a system directory
|
advanced_etempallowed=Temporary files directory $1 is a system directory
|
||||||
advanced_pass=Make password available to Webmin programs?<br><font size=-1>(Does not work when session authentication is enabled)</font>
|
advanced_pass_desc=Make password available to Usermin programs?
|
||||||
|
advanced_pass_help=Does not work when session authentication is enabled
|
||||||
advanced_tempmods=Per-module temporary directories
|
advanced_tempmods=Per-module temporary directories
|
||||||
advanced_tmod=Module
|
advanced_tmod=Module
|
||||||
advanced_tdir=Directory
|
advanced_tdir=Directory
|
||||||
@@ -911,7 +912,9 @@ advanced_headers=Extra HTTP headers
|
|||||||
advanced_eheader=Headers must be formatted like <tt>Header: Value</tt>
|
advanced_eheader=Headers must be formatted like <tt>Header: Value</tt>
|
||||||
advanced_sortconfigs=Save config files sorted by its keys?
|
advanced_sortconfigs=Save config files sorted by its keys?
|
||||||
advanced_bufsize=Network buffer size in bytes
|
advanced_bufsize=Network buffer size in bytes
|
||||||
|
advanced_bufsize_binary=Network buffer size for downloads in bytes
|
||||||
advanced_ebufsize=Network buffer size must be a number greater than zero
|
advanced_ebufsize=Network buffer size must be a number greater than zero
|
||||||
|
advanced_ebufsize_binary=Network buffer size for downloads must be a number greater than zero
|
||||||
|
|
||||||
syslog_errorlog=Webmin error log
|
syslog_errorlog=Webmin error log
|
||||||
|
|
||||||
|
|||||||
@@ -58,14 +58,14 @@ return &software::missing_install_link(
|
|||||||
|
|
||||||
# request_letsencrypt_cert(domain|&domains, webroot, [email], [keysize],
|
# request_letsencrypt_cert(domain|&domains, webroot, [email], [keysize],
|
||||||
# [request-mode], [use-staging], [account-email],
|
# [request-mode], [use-staging], [account-email],
|
||||||
# [reuse-key])
|
# [reuse-key], [server-url, server-key, server-hmac])
|
||||||
# Attempt to request a cert using a generated key with the Let's Encrypt client
|
# Attempt to request a cert using a generated key with the Let's Encrypt client
|
||||||
# command, and write it to the given path. Returns a status flag, and either
|
# command, and write it to the given path. Returns a status flag, and either
|
||||||
# an error message or the paths to cert, key and chain files.
|
# an error message or the paths to cert, key and chain files.
|
||||||
sub request_letsencrypt_cert
|
sub request_letsencrypt_cert
|
||||||
{
|
{
|
||||||
my ($dom, $webroot, $email, $size, $mode, $staging, $account_email,
|
my ($dom, $webroot, $email, $size, $mode, $staging, $account_email,
|
||||||
$key_type, $reuse_key) = @_;
|
$key_type, $reuse_key, $server, $server_key, $server_hmac) = @_;
|
||||||
my @doms = ref($dom) ? @$dom : ($dom);
|
my @doms = ref($dom) ? @$dom : ($dom);
|
||||||
$email ||= "root\@$doms[0]";
|
$email ||= "root\@$doms[0]";
|
||||||
$mode ||= "web";
|
$mode ||= "web";
|
||||||
@@ -80,6 +80,11 @@ foreach my $d (@doms) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($server && !$letsencrypt_cmd) {
|
||||||
|
return (0, "A non-standard server can only be used when the native ".
|
||||||
|
"Let's Encrypt client is installed");
|
||||||
|
}
|
||||||
|
|
||||||
if ($mode eq "web") {
|
if ($mode eq "web") {
|
||||||
# Create a challenges directory under the web root
|
# Create a challenges directory under the web root
|
||||||
if ($wildcard) {
|
if ($wildcard) {
|
||||||
@@ -170,6 +175,7 @@ if ($letsencrypt_cmd) {
|
|||||||
my $old_flags = "";
|
my $old_flags = "";
|
||||||
my $new_flags = "";
|
my $new_flags = "";
|
||||||
my $reuse_flags = "";
|
my $reuse_flags = "";
|
||||||
|
my $server_flags = "";
|
||||||
$key_type ||= $config{'letsencrypt_algo'} || 'rsa';
|
$key_type ||= $config{'letsencrypt_algo'} || 'rsa';
|
||||||
if (&compare_version_numbers($cmd_ver, 1.11) < 0) {
|
if (&compare_version_numbers($cmd_ver, 1.11) < 0) {
|
||||||
$old_flags = " --manual-public-ip-logging-ok";
|
$old_flags = " --manual-public-ip-logging-ok";
|
||||||
@@ -180,6 +186,19 @@ if ($letsencrypt_cmd) {
|
|||||||
if ($reuse_key) {
|
if ($reuse_key) {
|
||||||
$reuse_flags = " --reuse-key";
|
$reuse_flags = " --reuse-key";
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
$reuse_flags = " --no-reuse-key";
|
||||||
|
}
|
||||||
|
if ($server) {
|
||||||
|
$server_flags = " --server ".quotemeta($server);
|
||||||
|
if ($server_key) {
|
||||||
|
$server_flags .= " --eab-kid ".quotemeta($server_key);
|
||||||
|
}
|
||||||
|
if ($server_hmac) {
|
||||||
|
$server_flags .= " --eab-hmac-key ".
|
||||||
|
quotemeta($server_hmac);
|
||||||
|
}
|
||||||
|
}
|
||||||
$dir =~ s/\/[^\/]+$//;
|
$dir =~ s/\/[^\/]+$//;
|
||||||
$size ||= 2048;
|
$size ||= 2048;
|
||||||
my $out;
|
my $out;
|
||||||
@@ -195,6 +214,7 @@ if ($letsencrypt_cmd) {
|
|||||||
" --force-renewal".
|
" --force-renewal".
|
||||||
$reuse_flags.
|
$reuse_flags.
|
||||||
$old_flags.
|
$old_flags.
|
||||||
|
$server_flags.
|
||||||
" --non-interactive".
|
" --non-interactive".
|
||||||
" --agree-tos".
|
" --agree-tos".
|
||||||
" --config ".quotemeta($temp)."".
|
" --config ".quotemeta($temp)."".
|
||||||
@@ -219,6 +239,7 @@ if ($letsencrypt_cmd) {
|
|||||||
" --force-renewal".
|
" --force-renewal".
|
||||||
$reuse_flags.
|
$reuse_flags.
|
||||||
$old_flags.
|
$old_flags.
|
||||||
|
$server_flags.
|
||||||
" --non-interactive".
|
" --non-interactive".
|
||||||
" --agree-tos".
|
" --agree-tos".
|
||||||
" --config ".quotemeta($temp)."".
|
" --config ".quotemeta($temp)."".
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ eval "use Authen::OATH";
|
|||||||
if ($@) {
|
if ($@) {
|
||||||
return &text('twofactor_etotpmodule', 'Authen::OATH',
|
return &text('twofactor_etotpmodule', 'Authen::OATH',
|
||||||
"../cpan/download.cgi?source=3&cpan=Authen::OATH&mode=2&".
|
"../cpan/download.cgi?source=3&cpan=Authen::OATH&mode=2&".
|
||||||
"return=/$module_name/&returndesc=".&urlize($text{'index_return'}))
|
"return=/$module_name/&returndesc=".&urlize($text{'index_return'}));
|
||||||
}
|
}
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@@ -246,6 +246,7 @@ sub validate_twofactor_totp
|
|||||||
my ($id, $token, $apikey) = @_;
|
my ($id, $token, $apikey) = @_;
|
||||||
$id =~ /^[A-Z0-9=]+$/i || return $text{'twofactor_etotpid'};
|
$id =~ /^[A-Z0-9=]+$/i || return $text{'twofactor_etotpid'};
|
||||||
$token =~ /^\d+$/ || return $text{'twofactor_etotptoken'};
|
$token =~ /^\d+$/ || return $text{'twofactor_etotptoken'};
|
||||||
|
eval "use lib (\"$root_directory/vendor_perl\")";
|
||||||
eval "use Authen::OATH";
|
eval "use Authen::OATH";
|
||||||
if ($@) {
|
if ($@) {
|
||||||
return &text('twofactor_etotpmodule2', 'Authen::OATH');
|
return &text('twofactor_etotpmodule2', 'Authen::OATH');
|
||||||
|
|||||||
@@ -92,14 +92,14 @@ elsif ($in{'source'} == 2) {
|
|||||||
# Downloading RPM
|
# Downloading RPM
|
||||||
$release ||= 1;
|
$release ||= 1;
|
||||||
$progress_callback_url = &convert_osdn_url(
|
$progress_callback_url = &convert_osdn_url(
|
||||||
"http://$osdn_host/webadmin/webmin-${version}-${release}.noarch.rpm");
|
"http://$osdn_host/webadmin/newkey-webmin-${version}-${release}.noarch.rpm");
|
||||||
$sfx = ".rpm";
|
$sfx = ".rpm";
|
||||||
}
|
}
|
||||||
elsif ($in{'mode'} eq 'deb') {
|
elsif ($in{'mode'} eq 'deb') {
|
||||||
# Downloading Debian package
|
# Downloading Debian package
|
||||||
$release = $release ? "-".$release : "";
|
$release = $release ? "-".$release : "";
|
||||||
$progress_callback_url = &convert_osdn_url(
|
$progress_callback_url = &convert_osdn_url(
|
||||||
"http://$osdn_host/webadmin/webmin_${version}${release}_all.deb");
|
"http://$osdn_host/webadmin/newkey-webmin_${version}${release}_all.deb");
|
||||||
$sfx = ".deb";
|
$sfx = ".deb";
|
||||||
}
|
}
|
||||||
elsif ($in{'mode'} eq 'solaris-pkg') {
|
elsif ($in{'mode'} eq 'solaris-pkg') {
|
||||||
|
|||||||
Reference in New Issue
Block a user