Jabber-сервер OpenFire и транспорты к нему
Published on 21.06.2011
На работе у меня нет возможности поставит qip или icq. Но есть выход в инет и внутренний jabber сервер и клиент под него. Но местный icq-шлюз падает (jaber.kanet.ru), jabber.ru от транспортов отказался, на jabber.by.org проблемы с кодировкой. Потому было решено поднять свой.
Первым делом ставим сам OpenFire. Для этого добавляем репозитарий. В файл /etc/apt/sources.list прописываем строку
deb http://ftp.pl.debian.org/debian stable main contrib non-free
 После чего выполняем команды
apt-get update
 apt-get install sun-java6-jre
 Теперь качаем сам openfire http://www.igniterealtime.org/downloads/index.jsp#openfire (в нашем случае deb пакет).
 Переходим в каталог загрузки и выполняем
dpkg -i openfire_3.7.0_all.deb
 OpenFire установлен, можно настраивать.
Настройка выполняется через web-интерфейс. Заходим на адрес http://domain.com:9090
 Первой страницей выбираем язык. Русский присутствует, но переведено промтом. Но тут дело вкуса.
 Указываем ваше доменное имя.
 Третьей страницей выбираем тип базы данных – Embedded для встроенной или Standart для внешней. Со встроенной проблем не возникнет. Да и я, в связи с переездами, выбрал Standart. Тип MySQL. В строке адреса jdbc:mysql://[your_host]/[database_name], например jdbc:mysql://localhost:3306/openfire
 и соответсвенно указываем логин и пароль для подключения к базе.
 Тип профиля Default оставляем.
 Далее указываем мыло и пароль админа. В русской версии вторая строчка подтверждение пароля, а не та херня, что там написана.
 Все, настройка закончена. Можно пользоваться.
Но толку нам от голого сервера? Подключим еще и транспорт.
 Конкретно меня интересовал транспорт ICQ, но по ходу получилось подцепить еще и ВКонтакте.
 В качестве транспорта будем использовать Kraken IM Gateway. Подгружаем плагин через web-интерфейс (вкадка «Плагины»). После загрузки переходим к настройке – «Сервер» > Gatewys. Выбираем нужные протоколы и они сразу появляются в обзоре сервисов в клиенте.
 Для ВКонтакта выбираем XMPP и меняете host на vkmessenger.com. После чего из вашего IM клиента вы сможете принимать и отправлять личные сообщения.
При использовании внешней базы данных (MySQL) может возникнуть проблема с кодировками. Лечится просто. Запускаем данный скрипт, он изменит кодировку в таблицах базы.
 $db = mysqli_connect('localhost','login','passwod', 'jabber');
 if(mysqli_connect_errno())
 {
 echo "Cannot connect to the database - incorrect details";
 }
$sql = 'SHOW TABLES';
 if ( !( $result = $db->query( $sql ) ) ) {
 echo 'Get SHOW TABLE - SQL Error:
' . "\n";
 }
while ( $tables = $result->fetch_row() ) {
 echo $tables[0];
 # Loop through all tables in this database
 $table = $tables[key($tables)];
 if ( !( $result2 = $db->query("ALTER TABLE ".$table." COLLATE cp1251_general_ci") ) ) {
 echo 'UTF SET - SQL Error:
' . "\n";
 break;
 }
 print "$table changed to UTF-8 successfully.
\n";
 # Now loop through all the fields within this table
 if ( !($result2 = $db->query("SHOW COLUMNS FROM ".$table) ) ) {
 echo 'Get Table Columns Query - SQL Error:
' . "\n";
 break;
 }
 while ( $column = $result2->fetch_assoc() )
 {
 $field_name = $column['Field'];
 $field_type = $column['Type'];
 # Change text based fields
 $skipped_field_types = array('char', 'text', 'enum', 'set');
 foreach ( $skipped_field_types as $type )
 {
 if ( strpos($field_type, $type) !== false )
 {
 $sql4 = "ALTER TABLE $table CHANGE `$field_name` `$field_name` $field_type CHARACTER SET cp1251 COLLATE cp1251_general_ci";
 $result4 = $db->query($sql4);
 echo "---- $field_name changed to UTF-8 successfully.
\n";
 }
 }
 }
 echo "
\n";
 }
 $result->free();
 $result2->free();
 $result4->free();
 ?>
 В первых строчках меняем логин и на пароль, а так же имя базы и запускам.
Posted in: