пятница, 27 августа 2010 г.

OCS Inventory

Источник!

При создании базы (OCSNG_UNIX_SERVER_1.02_RC1/ocsreports/files/ocsbase.sql) важно что бы она была в кодировке UTF-8
@@ -1,4 +1,4 @@ -CREATE DATABASE ocsweb; +CREATE DATABASE ocsweb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; USE ocsweb;
Для таблиц files и tags принудительно прописать в sql скрипте создания базы (OCSNG_UNIX_SERVER_1.02_RC1/ocsreports/files/ocsbase.sql) кодировку latin1 (строка 143 и 468):

) ENGINE=MYISAM DEFAULT CHARSET=latin1;

Не знаю насколько это актуально если агент пропатчен под UTF-8, НО....
OCS для импорта XML использует модуль XML:Parser, этот модуль по умолчанию не понимает кодировку Windows-1251 (в которой шлет отчет виндовый агент)
требуется добавить ему поддержку кириллицы (файлы кодировок брать тут: http://uucode.com/xml/perl/#enc

 

В браузере набираем http://имя_сервера/ocsreports и попадаем на страницу авторизации. При необходимости выбираем русский язык (флажки в правом верхнем углу). Пользователь: admin, пароль: admin.

На этом установку можно считать оконченной.

Теперь решаем проблемы с отображением русских символов.

В файле /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
Там же я изменил
до
function textDecode( $txt ) {
    for( $i=0; $i<UTF8_DEGREE; $i++ ) {
        $txt = utf8_decode( $txt );
    }
    return $txt;
}
после
function textDecode( $txt ) {
   global $l;
       for( $i=0; $i<UTF8_DEGREE; $i++ ) {
         $txt = iconv("UTF-8", $l->g(0), $txt );
       }
   return $txt;
}
В файлах /usr/share/ocsinventory-server/ocsreports/group_show.php, header.php и machine.php меняем все вхождения charset=ISO-8859-1 на charset=UTF-8
При просмотре через www неправильно отображаются русские названия программ. Открываем для редактирования
/usr/share/ocsinventory-server/ocsreports/machine.php и правим function print_softwares($systemid)
до
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";

Комментариев нет:

Отправить комментарий