Bug 57887
| Summary: | Проблема с кодировкой возвращаемых строк в веб-интерфейсе при добавлении области | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Vladislav Glinkin <glinkinvd> | ||||
| Component: | pve-access-control | Assignee: | darisishe <darisishe> | ||||
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
| Severity: | normal | ||||||
| Priority: | P5 | CC: | andy, bozhchenkopa, darisishe, shaba, shevchenkodyu, shrek | ||||
| Version: | unstable | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| Attachments: |
|
||||||
В качестве дополнительной информации.
Заголовки ответа:
HTTP/1.1 200 OK
Cache-Control: max-age=0
Connection: close
Connection: Keep-Alive
Date: Tue, 17 Feb 2026 09:23:17 GMT
Pragma: no-cache
Server: pve-api-daemon/3.0
Content-Length: 172
Content-Type: application/json;charset=UTF-8
Expires: Tue, 17 Feb 2026 09:23:17 GMT
Сам ответ:
{"message":"add auth server failed: ÐеизвеÑÑное Ð¸Ð¼Ñ Ð¸Ð»Ð¸ ÑлÑжба\n","data":null,"status":500,"success":0}
Локаль:
# locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
Проблема актуальна для версий:
pve-access-control-9.1.1-alt1
pve-http-server-6.0.5-alt1
Ошибка также исправляется изменением файла из пакета pve-http-server:
--- a/usr/share/perl5/PVE/HTTPServer.pm
+++ b/usr/share/perl5/PVE/HTTPServer.pm
@@ -226,7 +226,9 @@
$resp->{message} = $err->{msg};
} else {
$resp->{status} = HTTP_INTERNAL_SERVER_ERROR;
- $resp->{message} = $err;
+ my $msg = "$err";
+ utf8::decode($msg) if !utf8::is_utf8($msg);
+ $resp->{message} = $msg;
}
}
Таким образом, исправляются все API-ошибки, не только связанные с LDAP
pve-http-server-6.0.5-alt2 -> sisyphus: Wed Jul 22 2026 Sergey Konev <darisishe@altlinux> 6.0.5-alt2 - api: decode UTF-8 error messages before JSON formatting (Closes: 57887) |

Description
Vladislav Glinkin 2026-02-17 12:58:35 MSKCreated attachment 20703 [details] Как это выглядит Версия пакета: pve-access-control-9.0.5-alt1 Проблема с кодировкой возвращаемых строк в веб-интерфейсе при добавлении области. Сервер возвращает некорректное сообщение об ошибке. К примеру, если в CLI выполнить команду (при условии, что нода не резолвит dc.freeipa.testdomain), то получаем корректное сообщение об ошибке: # pvesh create /access/domains --realm freeipa.testdomain --type ldap --base_dn dc=freeipa,dc=testdomain --user_attr uid --server1 dc.freeipa.testdomain --check-connection 1 --port 389 --mode ldap --comment FreeIPA add auth server failed: Неизвестное имя или служба В веб-интерфейсе же получаем: add auth server failed: ÐеизвеÑÑное Ð¸Ð¼Ñ Ð¸Ð»Ð¸ ÑлÑжба (500) Для решения этой проблемы помогло изменение: --- a/usr/share/perl5/PVE/Auth/LDAP.pm +++ b/usr/share/perl5/PVE/Auth/LDAP.pm @@ -516,7 +516,13 @@ sub on_delete_hook { sub check_connection { my ($class, $realm, $config, %param) = @_; - $class->connect_and_bind($config, $realm, \%param); + eval { + $class->connect_and_bind($config, $realm, \%param); + }; + if (my $err = $@) { + utf8::decode($err); + die $err; + } } 1; Теперь сообщение об ошибки отображается корректно, однако при выполнении ранее упомянутой команды в CLI появилось предупреждение: Wide character in die at /usr/share/perl5/PVE/RESTHandler.pm line 1024. Нужен более детальный анализ исходного кода и решение проблемы.