четверг, 27 августа 2009 г.

Инвентаризация компьютерной техники. OCS inventory - кодировка.

Для правильного отображения русских символов в интерфейсе OCS Inventory я воспользовался рекомендациями статьи в блоге Евгения Бражко.
Инсталлятор я не правил, поскольку система уже была установлена и работала, правда русские символы в описании оборудования отображались не корректно.

В файле /usr/share/ocsinventory-server/ocsreports/preferences.php в строке 21 (*в моем случае номера строк были другие, это из-за различия версий):
строку:
define("UTF8_DEGREE", 0 ); // 0 For non utf8 database, 1 for utf8
заменяем на:
define("UTF8_DEGREE", 1 ); // 0 For non utf8 database, 1 for utf8

В файлах /usr/share/ocsinventory-server/ocsreports/group_show.php, header.php и machine.php меняем charset=ISO-8859-1 на charset=windows-1251 (строки 116, 49 и 90 соответственно).

При просмотре через www неправильно отображаются русские названия программ. Открываем для редактирования
/usr/share/ocsinventory-server/ocsreports/machine.php и правим function print_softwares($systemid) начиная со строки 606:

до:
echo "$td3".htmlentities(textDecode($item->PUBLISHER))."</td>
$td3".htmlentities(textDecode($item->NAME))." </td>
$td3".textDecode($item->VERSION)." </td>
$td3".(htmlentities(textDecode($item->COMMENTS))?htmlentities(textDecode($item->COMMENTS)):"N/A")." </td>";

после:
echo "$td3".textDecode($item->PUBLISHER)."</td>
$td3".textDecode($item->NAME)." </td>
$td3".textDecode($item->VERSION)." </td>
$td3".(htmlentities(textDecode($item->COMMENTS))?textDecode($item->COMMENTS):"N/A")." </td>";


Для отображения на главной странице имен пользователей на русском языке в файле preferences.php следует внести изменения в строку 763:
echo $item[$chmp]."</span></a></font></td>\n";
заменяем на:
echo textDecode($item[$chmp])."</span></a></font></td>\n";

После таких изменений у меня осталась проблема с отображением русских символов в All Software, решение проблемы нашлось в комментариях к статье. Проблем с агентом сбора информации для Windows, о которых говорилось в статье я не обнаружил, возможно разработчики учли это и в новой версии исправлили ошибку.

Проблему с отображением русских символов в All Software решаем изменениями в файле: /usr/share/ocsinventory-reports/ocsreports/require/function_table_html.php
В строке 153 добавляем textDecode($v)

На этом доработка OCSNG заканчивается. На очереди настройка интеграции GLPI и OCSNG, а также решение проблем с кодировкой при переносе данных в GLPI.

7 комментариев:

  1. Привет, сделал все по твоей статье, вроде все норм, но в списке, допустим в таблице например Windows 7 ????????????????? а должно быть написано Максимальная ... Ни как не получается победить.

    ОтветитьУдалить
  2. Ох давно это было, всех подробностей уже и не помню.
    Эти вопросы отображаются в таблице All Software? И только-ли для Windows 7 названия некорректно отображаются?

    ОтветитьУдалить
  3. Да уж, я понимаю что давно, но вот как то так получилось что начал использовать прогу сейчас и такая вот беда вылезла. Так вот, нет, это не только с семеркой, но и, самое что интересное, не во всех комплектухах, а только в некоторых.

    ОтветитьУдалить
  4. Это ("не во всех комплектухах") очень похоже на проблему агента работающего на компьютерах. Скорее всего данные собираемые им хранятся в системе в разных кодировках и отправляются в таком виде на сервер OCSNG.
    Для решения проблемы нужно скорее всего "подправить" агента, так что-бы он отправлял данные в единой кодировке понятной серверу.

    ОтветитьУдалить
  5. Да, я точно также подумал и уже рою в агенте. Спасибо дружище за помощь. Как решу проблему, отпишусь.

    ОтветитьУдалить
  6. Удачи! Надеюсь всё будет отлично!

    ОтветитьУдалить
  7. Если получилось исправить проблемы с кодировкой-поделись решением.

    ОтветитьУдалить