Compare commits

...

29 Commits
2.104 ... 2.105

Author SHA1 Message Date
Jamie Cameron
627a047028 Next virtual interface is always one greater than the last one 2023-11-07 17:56:02 -08:00
Ilia Ross
a1844d301d Update CHANGELOG.md for 2.105 2023-11-07 21:05:22 +02:00
Jamie Cameron
d9db632718 Merge pull request #2043 from webmin/dev/qq-in-glob
Fix to `quotemeta` variables instead
2023-11-06 19:17:48 -08:00
Ilia Ross
4b38af6b51 Fix to quotemeta variables instead 2023-11-06 13:28:22 +02:00
Jamie Cameron
46238ef7a1 Glob splits up strings based on spaces https://forum.virtualmin.com/t/deleted-a-virtual-server-now-virtualmin-gone-but-webmin-remains/123284 2023-11-05 20:32:58 -08:00
Jamie Cameron
059b47f84d New version bump 2023-11-05 16:25:01 -08:00
Ilia Ross
62b6b32719 Code cleanup 2023-11-05 19:13:28 +02:00
Ilia Ross
02eb35d622 Fix to test for file after it was declared
9cade51106
2023-11-03 22:38:17 +02:00
Jamie Cameron
4d5b4ef697 Merge branch 'master' of github.com:webmin/webmin 2023-11-01 23:33:44 -07:00
Jamie Cameron
b3c8706690 Fix variable name 2023-11-01 23:26:53 -07:00
Ilia Ross
283fe2e440 Fix not to set reuse flag on initial request 2023-11-01 00:16:02 +02:00
Jamie Cameron
8e586e6f14 Merge branch 'master' of github.com:webmin/webmin 2023-10-28 15:21:22 -07:00
Jamie Cameron
7ad30bdc8c Make sure index field is always populated https://github.com/webmin/webmin/issues/2041 2023-10-28 15:21:13 -07:00
Ilia Ross
81ead590c9 Add better display of disabled features 2023-10-26 20:36:05 +03:00
Jamie Cameron
48b0912cf6 Merge pull request #2038 from MiraMaX166/master
fix Russian localization
2023-10-26 21:47:07 +11:00
MiraMaX166
e0d743076d fix Russian localization 2023-10-26 11:42:34 +06:00
Ilia Ross
91c2facff9 Fix to use default accordion instead 2023-10-25 18:03:24 +03:00
Jamie Cameron
8e71cfa73a Merge branch 'master' of github.com:webmin/webmin 2023-10-25 02:24:38 -07:00
Jamie Cameron
9cade51106 Fix bad file descriptor error https://forum.virtualmin.com/t/sql-execution-sql-backup-restore-fails/123116 2023-10-25 02:24:31 -07:00
Ilia Ross
d0691f273c Merge pull request #2035 from MiraMaX166/master
Russian localization update. Logviewer.
2023-10-20 07:40:27 +03:00
MiraMaX166
ef41362b57 Russian localization update. Logviewer. 2023-10-20 10:29:12 +06:00
Jamie Cameron
6942ce7f0f Merge branch 'master' of github.com:webmin/webmin 2023-10-19 13:17:26 -07:00
Jamie Cameron
97d1624bb0 Fix param to read only headers https://sourceforge.net/p/webadmin/usermin-bugs/501/ 2023-10-19 13:17:19 -07:00
Ilia Ross
a85fa2f8c2 Fix Cortex CPU detection in sensors output
https://forum.virtualmin.com/t/cpu-temp-id-missing-dashboard/123096
[build]
2023-10-19 20:35:57 +03:00
Ilia Ross
c0e20f024a Fix German translation
https://github.com/webmin/webmin/issues/2031
2023-10-19 15:40:00 +03:00
Ilia Ross
1c13b29aa6 Merge pull request #2032 from MiraMaX166/master
Russian localization update
2023-10-19 14:59:04 +03:00
MiraMaX166
ba623246a1 Russian localization update 2023-10-19 17:38:39 +06:00
Ilia Ross
e36f2051e3 Update .gitignore 2023-10-19 14:38:29 +03:00
Jamie Cameron
c0bc9daff3 Fix indent 2023-10-18 11:37:02 -07:00
23 changed files with 275 additions and 47 deletions

1
.gitignore vendored
View File

@@ -21,3 +21,4 @@ core
tarballs/
minimal/
.DS_Store
.vscode/settings.json

View File

@@ -1,5 +1,11 @@
## Changelog
#### 2.105 (November 09, 2023)
* Fix param to read only headers [sourceforge.net/usermin-bugs#501](https://sourceforge.net/p/webadmin/usermin-bugs/501/)
* Fix not to set `reuse` flag on initial Let's Encrypt request
* Fix to correctly escape mail file names upon deletion
* Fix index field in cache file in BIND DNS module
#### 2.104 (October 16, 2023)
* Add support for numbered and bulleted lists in email HTML editor
* Add ability to display active file locks in `Webmin Configuration ⇾ File Locking` page

View File

@@ -449,6 +449,9 @@ for(my $i=0; $i<@oldv || $i<@newv; $i++) {
$newv[$i]->{'line'} = $_[0]->{'eline'};
$newv[$i]->{'eline'} =
$_[0]->{'eline'} + scalar(@nl) - 1;
if (!defined($newv[$i]->{'index'})) {
$newv[$i]->{'index'} = @$pm ? $pm->[@$pm - 1]->{'index'} + 1 : 0;
}
&renumber($parent, $_[0]->{'eline'}-1,
$_[0]->{'file'}, scalar(@nl));
}
@@ -469,6 +472,9 @@ for(my $i=0; $i<@oldv || $i<@newv; $i++) {
$newv[$i]->{'line'} = $_[0]->{'line'}+1;
$newv[$i]->{'eline'} =
$_[0]->{'line'} + scalar(@nl);
if (!defined($newv[$i]->{'index'})) {
$newv[$i]->{'index'} = 0;
}
&renumber($parent, $_[0]->{'line'},
$_[0]->{'file'}, scalar(@nl));
}

View File

@@ -14,7 +14,7 @@ index_manual=Editiere manuell Cron-Aufträge.
index_return=Cron-Aufträge
index_env=Umgebungsvariable
index_move=Verschieben
index_next=Nächte Ausfürung
index_next=Nächste Ausführung
index_nunknown=Unbekannt
index_run=Läuft?
index_ecmd=Das Kommando $1 um Cron Benutzer Konfigurationen zu bearbeiten wurde nicht gefunden. Vielleicht ist Cron nicht auf Ihrem System installiert?

View File

@@ -270,21 +270,21 @@ if ($show_subnet_delete) {
if ($show_subnet_shared) {
if (@ulinks >= $display_max) {
# Could not show all subnets, so show lookup form
print &ui_form_start("lookup_subnet.cgi", "get");
print &ui_table_start(undef, undef, 2);
print &ui_table_row($text{'index_subtoomany'}, &ui_submit($text{'index_sublook2'}));
print &ui_table_row($matches, &ui_textbox("subnet", "", 30));
print &ui_table_end();
print &ui_form_end(undef,undef,1);
print &ui_form_start("lookup_subnet.cgi", "get");
print &ui_table_start(undef, undef, 2);
print &ui_table_row($text{'index_subtoomany'}, &ui_submit($text{'index_sublook2'}));
print &ui_table_row($matches, &ui_textbox("subnet", "", 30));
print &ui_table_end();
print &ui_form_end(undef,undef,1);
}
if (@slinks >= $display_max) {
# Could not show all shared nets, so show lookup form
print &ui_form_start("lookup_shared.cgi", "get");
print &ui_table_start(undef, undef, 2);
print &ui_table_row($text{'index_shatoomany'}, &ui_submit($text{'index_shalook2'}));
print &ui_table_row($matches, &ui_textbox("shared", "", 30));
print &ui_table_end();
print &ui_form_end(undef,undef,1);
print &ui_form_start("lookup_shared.cgi", "get");
print &ui_table_start(undef, undef, 2);
print &ui_table_row($text{'index_shatoomany'}, &ui_submit($text{'index_shalook2'}));
print &ui_table_row($matches, &ui_textbox("shared", "", 30));
print &ui_table_end();
print &ui_form_end(undef,undef,1);
}
}

View File

@@ -710,3 +710,30 @@ body > .mode > b[data-mode="server-manager"] > a > .ff-cloudmin {
.shell select[name="pcmd"] {
max-width: 65vw;
}
[data-pro-disabled$="-link"] {
filter: grayscale(1) contrast(0.1);
opacity: 1;
}
[data-pro-disabled="cell"],
[data-pro-disabled$="-elem"] {
filter:grayscale(1);
opacity: .73;
}
[data-pro-disabled$="-elem"] input:not([type="radio"]):not([type="checkbox"]) {
filter: grayscale(1) contrast(0.9);
}
[data-pro-disabled$="-elem"] input {
cursor: not-allowed !important;
}
.linkwithicon.inactive a,
.linkindented.inactive a,
[data-pro-disabled$="-link"] a {
cursor: alias;
}
[data-pro-disabled$="-elem"] a {
filter: grayscale(1) contrast(0.5);
}
[data-pro-disabled$="-elem"] a:hover {
filter: grayscale(1) contrast(1);
}

6
logrotate/config.info.ru Normal file
View File

@@ -0,0 +1,6 @@
line1=Настраиваемые параметры,11
sort_mode=Сортировать файлы журналов по:,1,1-имени файла журнала,0-порядку в файле конфигурации
add_file=Добавьте новые разделы logrotate в,3,основной файл конфигурации
line2=Конфигурация системы,11
logrotate_conf=Путь к файлу конфигурации logrotate,0
logrotate=Путь к программе logrotate,0

118
logrotate/lang/ru Normal file
View File

@@ -0,0 +1,118 @@
index_title=Ротация файлов журналов
index_econf=Файл конфигурации ротации журналов $1 не найден в вашей системе. Возможно, logrotate не установлен или <a href='$2'>конфигурация модуля</a> неверна.
index_ecmd=Программа ротации журналов $1 не найдена в вашей системе. Возможно, она не установлена или <a href='$2'>конфигурация модуля</a> неверна.
index_eversion=Не удалось получить версию logrotate с помощью команды $1: $2
index_version=Logrotate версия $1
index_add=Добавьте новый файл журнала для ротации.
index_file=Файл журнала
index_period=Период ротации
index_post=Команда после ротации
index_none=Файлы журналов еще не определены.
index_global=Редактировать глобальные параметры
index_globaldesc=Нажмите эту кнопку, чтобы изменить настройки, применимые ко всем файлам журналов, и определить значения по умолчанию для журналов.
index_sched=Изменить расписание
index_scheddesc=Нажмите эту кнопку, чтобы изменить расписание, по которому cron запускает logrotate, а также включить или отключить его.
index_nocmd=Ничего
index_notset=Не задано
index_return=списку файлов журналов
index_force=Принудительная ротация журналов
index_forcedesc=Принудительно выполнить немедленную ротацию всех файлов журналов, даже если время еще не пришло.
index_logrotate=Logrotate
index_delete=Удалить выбранную ротацию журналов
period_daily=Ежедневно
period_weekly=Еженедельно
period_monthly=Ежемесячно
period_never=Никогда
period_bytes=байт
edit_title1=Редактирование настройки ротации
edit_title2=Создать файл журнала
edit_header=Настройка ротации журнала
edit_file=Пути к файлам журналов
edit_sched=Расписание ротации
edit_rotate=Количество старых журналов, которые нужно сохранить
edit_compress=Сжать старые файлы журналов?
edit_delaycompress=Отложить сжатие до следующего цикла?
edit_copytruncate=Усечь файл журнала?
edit_ifempty=Ротировать, даже если файл журнала пуст?
edit_missingok=Игнорировать файл журнала, если он отсутствует?
edit_size=Максимальный размер до ротации
edit_always=Игнорируется
edit_minsize=Минимальный размер для ротации
edit_nominsize=Всегда
edit_ext=Расширение для ротированных имен файлов
edit_dateext=Использовать расширение даты для ротированных файлов
edit_mail=Отправить файл журнала по электронной почте перед удалением?
edit_mailto=Да, на адрес
edit_mailno=Нет, не отправлять
edit_mailfl=Файл журнала на электронную почту
edit_mailfirst=Самый новый, который только что был ротирован
edit_maillast=Самый старый, который скоро будет удален
edit_create=Пересоздать файл журнала после ротации?
edit_createas=Да, с правами $1, принадлежит пользователю $2 и группе $3.
edit_createno=Нет, не создавать заново
edit_createsame=Да, со старыми разрешениями
edit_olddir=Хранить старые ротированные журналы в
edit_olddirto=В каталоге
edit_olddirsame=Каталог с тем же именем, что и файл журнала
edit_errors=Сообщения об ошибках по электронной почте
edit_errorsno=Никто
edit_errorsto=Адрес или пользователь
edit_post=Команды, выполняемые после ротации
edit_pre=Команды, выполняемые перед ротацией
edit_default=По умолчанию ($1)
edit_sharedscripts=Запускать сценарии только один раз для всех файлов?
edit_now=Ротировать сейчас
edit_clone=Клонировать
global_title=Глобальные параметры
global_header=Параметры по умолчанию для всех файлов журналов
save_err=Failed to save log
save_efile=Не удалось сохранить журнал
save_esize=Отсутствует или недействителен максимальный размер
save_eminsize=Отсутствует или недействителен минимальный размер
save_erotate=Отсутствует или неверно указано максимальное количество старых журналов для хранения
save_ecreatemode=Отсутствует или недействителен режим создания 3- или 4-значного восьмеричного числа.
save_ecreateuser=Отсутствует или недействителен созданный пользователь
save_ecreategroup=Группа создания отсутствует или недействительна
save_emust1=При входе в режим создания необходимо войти под соответствующим пользователем
save_emust2=При входе в режим создания необходимо войти под соответствующей группой
save_eolddirto=Отсутствует или неверен каталог для старых ротированных журналов
save_eext=Отсутствует расширение для имен файлов ротированных журналов
save_emailto=Отсутствует адрес электронной почты для ротируемых журналов
save_eerrors=Отсутствует адрес электронной почты для сообщений об ошибках
save_epre=Сценарий перед ротацией не может содержать строку <tt>endscript</tt> или <tt>endrotate</tt>
save_epost=Сценарий после ротации не может содержать строку <tt>endscript</tt> или <tt>endrotate</tt>
save_enofiles=Файлы для ротации не указаны
log_modify_sched=Изменено задание Cron по ротации журналов
log_create_sched=Создано задание Cron по ротации журналов
log_delete_sched=Удалено задание Cron по ротации журналов
log_global=Измененные глобальные параметры
log_create=Добавлена ротация файла журнала $1
log_modify=Изменена ротация для файла журнала $1
log_delete=Удалена ротация для файла журнала $1
log_delete_logs=Удалена ротация файлов журналов $1
sched_title=График ротации журналов
sched_desc=Для выполнения ротации журналов, настроенной с помощью этого модуля, команда $1 должна запускаться Cron по регулярному расписанию (обычно ежедневно).
sched_runparts=В настоящее время команда ротации журналов запускается из сценария $1 $2 и не может быть изменена.
sched_sched=Задание Cron по ротации журналов
sched_disabled=Отключено
sched_enabled=Включено, по времени ..
sched_save=Обновить задание Cron
sched_err=Не удалось сохранить задание для ротации
sched_when=Время запуска
force_title=Принудительная ротация журнала
force_doing=Принудительная немедленная ротация всех файлов журналов ..
force_doingone=Принудительная немедленная ротация одного файла журнала ..
force_done=.. выполнено.
force_failed=.. не выполнено! Смотрите вывод выше, чтобы понять причину.
delete_err=Не удалось удалить журналы
delete_enone=Ничего не выбрано
__norefs=1

View File

@@ -0,0 +1,3 @@
name_ru=Ротация файлов журналов
longdesc_ru=Настройте автоматическую ротацию Apache, Squid, Syslog и других файлов журналов.
desc_ru=Ротация файлов журналов

6
logviewer/config.info.ru Normal file
View File

@@ -0,0 +1,6 @@
line1=Настраиваемые параметры,11
lines=Количество отображаемых строк по умолчанию,0,6
refresh=Интервал обновлениями просмотра журнала (сек.),3,Никогда
others=Показать логи других модулей?,1,1-Да,0-Нет
extras=Дополнительные файлы журналов для отображения,9,50,4,\t
reverse=Порядок отображения журнала,1,1-Самые новые вверху,0-Самые новые внизу

41
logviewer/lang/ru Normal file
View File

@@ -0,0 +1,41 @@
index_title=Просмотр системных журналов
index_elogs=Журналы для отображения не найдены
index_to=Журнал
index_rule=Описание
index_file=Файл $1
index_cmd=Вывод из $1
index_return=списку журналов
index_view=Просмотр..
index_viewfile=Просмотреть файл журнала:
index_viewok=Просмотр
journal_journalctl=Все сообщения
journal_expla_journalctl=Все сообщения с пояснениями
journal_journalctl_dmesg=Сообщения ядра
journal_journalctl_debug_info=Отладочные и информационные сообщения
journal_journalctl_notice_warning=Уведомления и предупреждающие сообщения
journal_journalctl_err_crit=Ошибки и критические сообщения
journal_journalctl_alert_emerg=Оповещения и экстренные сообщения
view_title=Просмотр файла журнала
view_header=Последние $1 строк из $2
view_header2=Последние $1 строк из $2 файла
view_empty=Пустой журнал
view_refresh=Обновить
view_filter=Фильтровать строки с текстом $1
save_efile='$1' не является допустимым именем файла : $2
save_ecannot2=Вам не разрешено просматривать этот журнал
save_ecannot6=Вам не разрешено просматривать произвольные журналы
save_ecannot7=Вам не разрешено просматривать этот дополнительный журнал
save_emissing=Отсутствует файл журнала для просмотра
acl_any=Можно ли просмотреть любой файл как журнал?
acl_logs=Может просматривать и настраивать файлы журналов
acl_all=Все журналы
acl_sel=Только перечисленные файлы и файлы, находящиеся в перечисленных каталогах ..
acl_extra=Дополнительные файлы журналов для этого пользователя
acl_syslog=Можно ли просматривать журналы syslog?
acl_others=Можно ли просматривать логи других модулей?
__norefs=1

3
logviewer/module.info.ru Normal file
View File

@@ -0,0 +1,3 @@
longdesc_ru=Просмотр и поиск всех журналов, доступных в системе
name_ru=Системные журналы
desc_ru=Cистемные журналы

View File

@@ -2583,14 +2583,14 @@ return @rv;
# Read a single message from a file
sub read_mail_file
{
local (@headers, $mail);
my ($file, $headersonly) = @_;
# Open and read the mail file
&open_as_mail_user(MAIL, $_[0]) || return undef;
$mail = &read_mail_fh(MAIL, 0, $_[1]);
$mail->{'file'} = $_[0];
&open_as_mail_user(MAIL, $file) || return undef;
my $mail = &read_mail_fh(MAIL, 0, $headersonly);
$mail->{'file'} = $file;
close(MAIL);
local @st = stat($_[0]);
local @st = stat($file);
$mail->{'size'} = $st[7];
$mail->{'time'} = $st[9];
@@ -2613,14 +2613,15 @@ return $mail;
# higher = number of bytes
sub read_mail_fh
{
local ($fh, $endmode, $headeronly) = @_;
local (@headers, $mail);
my ($fh, $endmode, $headersonly) = @_;
my @headers;
my $mail = { };
# Read the headers
local $lnum = 0;
my $lnum = 0;
while(1) {
$lnum++;
local $line = <$fh>;
my $line = <$fh>;
$mail->{'size'} += length($line);
$line =~ s/\r|\n//g;
last if ($line eq '');

View File

@@ -1553,7 +1553,7 @@ if ($folder->{'type'} == 1 || $folder->{'type'} == 3) {
&get_maildir_files($folder->{'file'}) :
&get_mhdir_files($folder->{'file'});
if ($folder->{'type'} == 1) {
foreach my $sf (glob("$folder->{'file'}/.??*")) {
foreach my $sf (glob("\Q$folder->{'file'}\E/.??*")) {
push(@files, &get_maildir_files($sf));
}
}
@@ -3643,7 +3643,7 @@ if (!%hasattach) {
}
else {
$hasattach_file = "$module_config_directory/attach";
if (!glob($hasattach_file."*")) {
if (!glob("\Q$hasattach_file\E.*")) {
$hasattach_file = "$module_var_directory/attach";
}
}

View File

@@ -1122,7 +1122,7 @@ foreach my $folder (&list_user_folders($user)) {
&unlink_file($ifile);
}
else {
&unlink_file(glob("$ifile.{dir,pag,db}"));
&unlink_file(glob("\Q$ifile\E.{dir,pag,db}"));
}
&unlink_file("$ifile.ids");
}
@@ -1136,7 +1136,7 @@ foreach my $folder (&list_user_folders($user)) {
&unlink_file($ifile);
}
else {
&unlink_file(glob("$ifile.{dir,pag,db}"));
&unlink_file(glob("\Q$ifile\E.{dir,pag,db}"));
}
}
# Remove read file
@@ -1145,7 +1145,7 @@ if (-r $read) {
&unlink_file($read);
}
else {
&unlink_file(glob("$read.{dir,pag,db}"));
&unlink_file(glob("\Q$read\E.{dir,pag,db}"));
}
}
@@ -1280,7 +1280,7 @@ sub user_read_dbm_file
{
my ($user) = @_;
my $rv = "$module_config_directory/$user.read";
if (!glob($rv."*")) {
if (!glob("\Q$rv\E.*")) {
$rv = "$module_var_directory/$user.read";
}
return $rv;

View File

@@ -606,12 +606,12 @@ foreach my $dat (glob("$config{'minecraft_dir'}/*/level.dat")) {
if (-d "$path/players") {
# Old format
@players = map { s/^.*\///; s/\.dat$//; $_ }
glob("$path/players/*");
glob("\Q$path\E/players/*");
}
if (-d "$path/playerdata" && !@players) {
# New format (UUID based)
@players = map { s/^.*\///; s/\.dat$//; $_ }
glob("$path/playerdata/*");
glob("\Q$path\E/playerdata/*");
@players = map { my $u = $_;
&uuid_to_username($u) || $u } @players;
}

View File

@@ -1028,25 +1028,26 @@ sub execute_sql_file
if (&is_readonly_mode()) {
return (0, undef);
}
local ($db, $file, $user, $pass) = @_;
local $authstr = &make_authstr($user, $pass);
local $cs = $sql_charset ? "--default-character-set=".quotemeta($sql_charset)
my ($db, $file, $user, $pass) = @_;
-r $file || return (1, "$file does not exist");
my $authstr = &make_authstr($user, $pass);
my $cs = $sql_charset ? "--default-character-set=".quotemeta($sql_charset)
: "";
local $temp = &transname();
my $temp = &transname();
$file = &fix_collation($file);
&open_tempfile(TEMP, ">$temp");
&print_tempfile(TEMP, "source ".&fix_collation($file).";\n");
&print_tempfile(TEMP, "source ".$file.";\n");
&close_tempfile(TEMP);
&set_ownership_permissions(undef, undef, 0644, $temp);
&set_authstr_env();
local $cmd = "$config{'mysql'} $authstr -t ".quotemeta($db)." ".$cs.
my $cmd = "$config{'mysql'} $authstr -t ".quotemeta($db)." ".$cs.
" <".quotemeta($temp);
-r $file || return (1, "$file does not exist");
if ($_[4] && $_[4] ne 'root' && $< == 0) {
# Restoring as a Unix user
$cmd = &command_as_user($_[4], 0, $cmd);
}
local $out = &backquote_logged("$cmd 2>&1");
local @rv;
my $out = &backquote_logged("$cmd 2>&1");
my @rv;
if ($?) {
# Total failure
@rv = ($?, $out || "$cmd failed");

View File

@@ -147,7 +147,7 @@ if (&has_command("ip")) {
$vifc{'edit'} = ($vifc{'name'} !~ /^ppp/);
$vifc{'index'} = scalar(@rv);
push(@rv, \%vifc);
$i++;
$i = $vn + 1;
}
}
}

View File

@@ -500,7 +500,7 @@ my @cpu;
my @fans;
my @cputhermisters;
if (&has_command("sensors")) {
my ($cpu, $cpu_aux, $cpu_package, $cpu_broadcom, $cpu_amd);
my ($cpu, $cpu_aux, $cpu_unnamed, $cpu_package, $cpu_broadcom, $cpu_amd);
my $fh = "SENSORS";
# Examples https://gist.github.com/547451c9ca376b2d18f9bb8d3748276c
@@ -563,7 +563,7 @@ if (&has_command("sensors")) {
else {
# Auxiliary CPU temperature and fans were already captured
next if ($cpu_aux);
next if ($cpu_aux && !$cpu_unnamed);
# CPU types
($cpu_broadcom) = $_ =~ /cpu_thermal-virtual-[\d]+/i if (!$cpu_broadcom);
@@ -598,6 +598,13 @@ if (&has_command("sensors")) {
'temp' => int($2)
});
}
elsif (/cpu\s+temp(.*?):\s+([\+\-][0-9\.]+)/i) {
$cpu_unnamed++;
push(@cpu,
{ 'core' => $cpu_unnamed,
'temp' => int($2)
});
}
}
# AMD

View File

@@ -1 +1 @@
2.104
2.105

View File

@@ -1826,7 +1826,7 @@ sub error_stderr
{
my ($err, $ret) = @_;
my (@tm, @month, @gmt, $days, $hours, $mins, $timezone,
$make_datestr, $remove_host, $page);
$make_datestr, $remote_host, $page);
@tm = localtime(time());
@month = ( "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" );
@@ -1842,14 +1842,14 @@ $make_datestr =
sprintf("%2.2d/%s/%4.4d:%2.2d:%2.2d:%2.2d %s",
$tm[3], $month[$tm[4]], $tm[5]+1900,
$tm[2], $tm[1], $tm[0], $timezone);
$remove_host = $ENV{"REMOTE_HOST"};
$remote_host = $ENV{"REMOTE_HOST"};
$page = $ENV{"REQUEST_URI"};
$err = &html_strip($err);
$err =~ s/[\n\r]+/ /g;
$err =~ s/\s\?$//g;
$err =
"[$make_datestr] " .
($remove_host ? ( "[$remove_host] " ) : ( )) .
($remote_host ? ( "[$remote_host] " ) : ( )) .
($page ? ( "$page : " ) : ( )) . "$err\n";
return $err if ($ret);
print STDERR $err;

View File

@@ -62,13 +62,14 @@ if (@locks) {
[ 'kill', $text{'lock_kill'} ] ]);
print &ui_details({
'title' => $text{'lock_files'},
'class' => 'warning',
'class' => 'default',
'content' => "$text{'lock_msg'}<br>" . $locked_content,
'html' => 1}, 1);
}
else {
print &ui_details({
'title' => $text{'lock_nfiles'},
'class' => 'default',
'content' => $text{'lock_noneopen'},
'html' => 1});
}

View File

@@ -189,6 +189,7 @@ if ($letsencrypt_cmd) {
else {
$reuse_flags = " --no-reuse-key";
}
$reuse_flags = "" if ($reuse_key && $reuse_key == -1);
if ($server) {
$server_flags = " --server ".quotemeta($server);
if ($server_key) {