Bug 57887 - Проблема с кодировкой возвращаемых строк в веб-интерфейсе при добавлении области
Summary: Проблема с кодировкой возвращаемых строк в веб-интерфейсе при добавлении области
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: pve-access-control (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: darisishe@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-02-17 12:58 MSK by Vladislav Glinkin
Modified: 2026-02-18 09:46 MSK (History)
4 users (show)

See Also:


Attachments
Как это выглядит (39.80 KB, image/png)
2026-02-17 12:58 MSK, Vladislav Glinkin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Vladislav Glinkin 2026-02-17 12:58:35 MSK
Created 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.

Нужен более детальный анализ исходного кода и решение проблемы.
Comment 1 Vladislav Glinkin 2026-02-17 13:04:43 MSK
В качестве дополнительной информации.
Заголовки ответа:

	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=