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: