вторник, 16 августа 2011 г.

ISPConfig и рф домен (как показать в списке сайты не в punycode)

Так получилось, что на нашем хостинге стало достаточное количество сайтов с привязкой к рф доменам. В панели ISP Config мы видим кучу сайтов, представленных в виде punycode, из-за этого сложно найти нужный сайт для его редактирования.




Сегодня я потратил около 4 часов для решения этой проблемы.
Наш ISPConfig находится в директории /usr/local/ispconfig, если у вас по другому, то меняйте пути в командах.




1. Переходим в директорию с классами
cd /usr/local/ispconfig/interface/lib/classes




2. Скачиваем класс для перекодировки punycode
wget http://phlymail.com/download/Goodies/idna_convert_080.zip



3. Распаковываем
unzip idna_convert_080.zip




4. Открываем файл  /usr/local/ispconfig/interface/web/sites/web_domain_list.php

после строки

$list_def_file = "list/web_domain.list.php";

вставляем строки

require_once('../../lib/classes/idna_convert.class.php');
$idn_class = new idna_convert(array('idn_version' => '2008'));


сохраняемся, далее




5. Открываем файл  /usr/local/ispconfig/interface/lib/classes/listform_actions.inc.php

в функцию prepareDataRow, после строки
$key = $field['field'];

вставляем следующие строки

if(isset($field['formtype']) && $field['formtype'] == 'DOMAIN')
$rec[$key] = $idn_class->decode(stripslashes(@$rec[$key]));





6. Теперь осталось подправить сам шаблон списка сайтов
открываем файл /usr/local/ispconfig/interface/web/sites/list/web_domain.list.php 

и в самом конце находим конфигурацию поля

$liste["item"][] = array(       'field'         => "domain",
                                                        'datatype'      => "VARCHAR",
                                                        'formtype'      => "TEXT",
                                                        'op'            => "like",
                                                        'prefix'        => "%",
                                                        'suffix'        => "%",
                                                        'width'         => "",
                                                        'value'         => "");



нужно сделать так

$liste["item"][] = array(       'field'         => "domain",
                                                        'datatype'      => "VARCHAR",
                                                        'formtype'      => "DOMAIN",
                                                        'op'            => "like",
                                                        'prefix'        => "%",
                                                        'suffix'        => "%",
                                                        'width'         => "",
                                                        'value'         => "");







P.S.:
Уважайте труд других, оставляйте ссылку на данную статью при использовании материалов из нее. 

Версия ISPConfig, на моем сервере 3.0.3.3, 
операционная система - Debian Squeeze amd64.

Домены, изображенные на скриншоте мне не принадлежат и были использованы в качестве примера. 


Для версий новее 3.0.3 смотрите комментарии. Структура малость изменилась в новых версиях, поэтому действия иные.



В дальнейшем будут адаптированы другие компоненты ISPConfig, так что ожидайте дополнения статьи.

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

Анонимный комментирует...

К сожалению не помогло... после добавления всех этих строчек у меня отображение списка доменов вообще пропало.
ISPConfig Version: 3.0.4.1

Анонимный комментирует...

К сожалению не помогло... после добавления всех этих строчек у меня отображение списка доменов вообще пропало.
ISPConfig Version: 3.0.4.1
===========================
если есть время помогите.
почта - support@htcdn.net

Анонимный комментирует...

Спасибо Вам Павел, информация была очень полезная но не достоверная.

Для ISPConfig 3.0.4.1 :

1. Переходим в директорию с классами
cd /usr/local/ispconfig/interface/lib/classes

2. Скачиваем класс для перекодировки punycode
wget http://phlymail.com/download/Goodies/idna_convert_080.zip

3. Распаковываем
unzip idna_convert_080.zip


4. Открываем файл /usr/local/ispconfig/interface/lib/classes/listform_actions.inc.php

в функцию prepareDataRow, после строки
$key = $field['field'];

require_once('idna_convert.class.php');
$idn_class = new idna_convert(array('idn_version' => '2008'));
$rec[$key] = $idn_class->decode(stripslashes($rec[$key]));

И все Все арбайтен великолепно. больше ничего далать не пришлось.
P.S. Предыдущие два комента мои.

Анонимный комментирует...

Я извиняюсь все время забываю добавить все что я написал это для Fedora15 + ISPConfig 3.0.4.1
установка по инструкции - http://www.mini-server.ru/server/web/196-fedora-15-ispconfig-3?showall=1.
P.S. Все выше сказанное не сработало на Debian11+ISPConfig, установка с того же сайта.

Павел комментирует...

Ну видимо вся проблема в версии, я писал для версии 3.0.3 а вы в 3.0.4 делали, спасибо за ваши замечания.

Анонимный комментирует...

С версией 3.0.5.4... - не работает.

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