Часть 1. Установка и конфигурация Jabber-сервера OpenFire и Jabber-клиента Spark
Серия контента:
Этот контент является частью # из серии # статей: Практическое использование технологии Jabber
Этот контент является частью серии: Практическое использование технологии Jabber
Следите за выходом новых статей этой серии.
IM-сервисы (instant messaging — приложения для мгновенного обмена сообщениями) прочно вросли в корпоративную среду многих компаний. Однако в некоторых компаниях использование IM-сервисов запрещено, так как это создает дополнительную проблему с точки зрения информационной безопасности, а также может привести к нецелевому использованию рабочего времени. Но нельзя отрицать и тот факт, что применение такого рода систем повышает эффективность работы отдельных сотрудников и организации в целом.
Технология Jabber (XMPP) принадлежит к обширному классу IM-решений, построенных на основе децентрализованной клиент-серверной архитектуры и использующих открытые протоколы. Так как в данной реализации централизованный сервер отсутствует по умолчанию, то любой пользователь может запустить свой собственный XMPP-сервер. Принцип взаимодействия серверов во многом совпадает с принципом взаимодействия серверов электронной почты.
Первое упоминание о протоколе Jabber было зафиксировано 4 января 1999 года. Этот день и принято считать днем рождения сервиса, который основал Джереми Миллер.
Обзор протокола Jabber
Хотя XMPP не привязан к какой-либо сетевой архитектуре, но реализация сеанса взаимодействия осуществляется по схеме клиент-сервер. Клиент должен подключиться к серверу через протокол TCP/IP, а сами серверы взаимодействуют друг с другом посредством TCP-транспорта. По умолчанию для связи клиента с сервером используется порт 5222 (стандартизованный IANA «xmpp-client»), а для взаимодействия между серверами используется порт 5269.
Jabber (XMPP) – это расширяемый протокол на основе XML для обмена сообщениями и данными о присутствии. Jabber позволяет реализовывать ПО для обмена сообщениями между двумя любыми сетевыми конечными точками в режиме, близком к реальному времени.
Отличительной особенностью Jabber является то, что он позволяет использовать собственные серверы в качестве шлюзов между другими IM-протоколами. Однако в некоторых случаях из-за закрытости коммерческих IM-систем данная функциональность может работать нестабильно.
В сети Jabber каждый пользователь получает уникальный идентификатор, так называемый JID (Jabber ID). Этот идентификатор содержит имя пользователя и доменное имя сервера, на котором он зарегистрирован (например, user@jabber.com).
Несомненным плюсом является то, что Jabber-сервер можно изолировать от публичных сетей и использовать его только в локальной сети компании. В протоколе XMPP при необходимости обеспечивается защита потока информации от фальсификации и подслушивания и поддерживается шифрование, что повышает уровень его защищенности. Кроме этого клиенты могут самостоятельно применять PGP/GPG-шифрование внутри протокола.
Наверное, главным недостатком протокола является то, что передаваемая информация крайне избыточна, так как более 70% трафика XMPP составляют статусные сообщения о присутствии. Еще одной проблемой может оказаться то, что посредством данного протокола невозможно передавать не модифицированные бинарные данные. Поэтому для передачи файлов приходится использовать дополнительные протоколы.
Выбор подходящего IM-решения
В качестве примера будет рассматриваться средняя компания со штатом в 160 служащих с разветвленной структурой, состоящей из множества офисов и рабочих мест, удаленных от главного подразделения. Организация голосовой связи для всех сотрудников компании требует значительных финансовых затрат, поэтому организовать телефонное общение оказывается не всегда возможным. С другой стороны, связь с удаленными подразделениями необходима для организации продуктивной работы, обмена информацией и взаимодействия сотрудников друг с другом. Использование IM-системы на основе Jabber будет удобным и целесообразным выбором для решения данных задач.
Применение протокола XMPP в корпоративной сети позволяет достичь приемлемого уровня безопасности в первую очередь за счет установки корпоративного сервера Jabber. Это дает возможность ограничить трафик сообщений корпоративной сетью, а для сотрудников, не имеющих доступа к корпоративной сети, можно организовать защищенный канал для связи с центральным офисом. Также протокол XMPP позволяет реализовать подобное решение с использованием межсерверных связей (в том числе с использованием SSL).
Так как предполагается, что IM-система будет одновременно обслуживать максимум 150 клиентов, то нет необходимости в дорогом серверном оборудовании. Для подобной нагрузки будет достаточно простого офисного системного блока с увеличенным объемом памяти. В качестве операционной системы будет использоваться Linux-дистрибутив OpenSUSE, который распространяется под лицензией GPLv2, так что его можно свободно устанавливать и использовать.
Из всего многообразия Jabber-серверов был выбран OpenFire, так как это кроссплатформенный Jabber-сервер, написанный на языке Java и поддерживающий большое количество клиентов: Miranda IM, QIP Infium, Spark, Trillian Pro, Gaim, Panddion, Psi, Exodus, Pidgin, Kopete.
К его особенностям стоит отнести удобный и функциональный Web-интерфейс. Также в сервер OpenFire реализована интеграция с Active Directory и возможность расширения функционала за счет огромного количества плагинов. Сообщения и профили пользователей будут храниться в базе данных, работа с которой реализована через JDBC. Поэтому в качестве БД можно использовать любую реляционную СУБД с поддержкой JDBC или встроенную в OpenFire СУБД HSQLDB.
Настройка Linux-сервера
Описывать весь процесс установки OpenSUSE не имеет смысла (эту информацию можно найти во множестве источников), поэтому стоит остановиться лишь на нескольких ключевых моментах. Так как для развертывания IM-системы используется не очень мощный компьютер, то имеет смысл отказаться от графического интерфейса для повышения производительности. Это можно сделать на этапе установки «Выбор рабочего стола», как показано на рисунке 1.
Рисунок 1. Отключение графического интерфейса
Что касается разметки жесткого диска, то OpenSUSE по умолчанию предлагает создать отдельный раздел для /home, но поскольку компьютер будет использоваться исключительно как сервер, то весь объем жесткого диска можно отдать под корневой каталог /. Для этого надо выбрать режим экспертной настройки, удалить разделы / и /home и создать новый раздел, указав в качестве точки монтирования корневой каталог /.
После окончания установки необходимо зайти в систему, чтобы настроить сетевые интерфейсы и задать доменное имя компьютера. Для этого необходимо выполнить команду #yast2 с правами суперпользователя root. Эта команда запустит центр управления системы, в котором надо будет выбрать пункт Сетевые Интерфейсы (Network Devices), а затем пункт Настройки Сети (Network Settings), как показано на рисунке 2. На этом экране задается доменное имя и прописываются основной шлюз и DNS-сервер (при необходимости).
Рисунок 2. Конфигурация сетевых интерфейсов
Перед установкой Jabber-сервера OpenFire на компьютер потребуется установить СУБД MySQL. Все необходимые пакеты уже присутствуют в дистрибутиве OpenSuSe, поэтому достаточно выполнить следующую команду:
После установки пакетов демон MySQL можно запустить следующей командой:
и задать пароль суперпользователя (важное примечание: это суперпользователь для базы данных, а не операционной системы):
где rootpassword — это новый пароль, на запрос системы о вводе пароля следует нажать enter (по умолчанию пароль не задан).
Для создания новой базы данных необходимо подключиться к MySQL от имени только что созданного суперпользователя root:
База данных создается следующей командой:
После этого можно переходить к настройке сервера OpenFire.
Установка и настройка OpenFire
Прежде всего необходимо загрузить подходящий дистрибутив сервера OpenFire, используя менеджер закачек wget, как показано в листинге 1.
Листинг 1. Установка сервера OpenFire
Дальнейшая настройка будет выполняться через Web-интерфейс, изображенный на рисунке 3, который по умолчанию находится на порту 9090 (HTTP) и 9091 (HTTPS).
Рисунок 3. Административный интерфейс сервера OpenFire
При первом запуске потребуется настроить основные параметры сервера, такие как язык интерфейса, доменное имя сервера, и подключение к базе данных. В пункте меню Установочные параметры базы данных необходимо выбрать стандартная БД и тип БД — MySQL. После этого необходимо ввести параметры для подключения к ранее созданной БД, как показано на рисунке 4.
Рисунок 4. Настройка параметров подключения к БД
В следующей форме Настройка профиля можно настроить интеграцию с сервером каталогов, что позволяет создать единую учетную запись для работы со множеством корпоративных приложений и сервисов. В качестве сервера каталогов будет использоваться ActiveDirectory, поэтому необходимо произвести настройку подключения к серверу AD, как показано на рисунке 5. Также можно внести изменения в шаблоны запросов Карта пользователя (User Mapping) и Групповое Распределение (Group Mapping) для LDAP сервера.
Рисунок 5. Интеграция с сервером каталогов
На следующем этапе необходимо задать пользователя из каталога ActiveDirectory в качестве администратора OpenFire и проверить аутентификацию пользователя через ActiveDirectory, как показано на рисунке 6.
Рисунок 6. Интеграция с сервером каталогов
Если в ходе работы выявились какие-либо проблемы, то для повторного запуска инициализации сервера, достаточно изменить в файле /conf/openfire.xml значение параметра true на false .
После завершения конфигурации можно подключиться к Jabber–серверу, используя учетную запись администратора, созданную ранее. На главной странице административного интерфейса будет выводиться информация о текущем состоянии сервера и таблица портов, используемых OpenFire. Все настройки разделены на пять групп: Сервер (Server), Пользователи и Группы (Users/Groups), Открытые Сессии (Sessions), Чаты (Group Chat) и Плагины (Plugins).
На вкладке Сервер, изображенной на рисунке 7, можно просмотреть статистику и текущие настройки сервера, такие как дата и время, язык интерфейса, настройки базы данных, и при необходимости изменить их.
Рисунок 7. Сводная информация о сервере
На вкладке Users/Groups, изображенной на рисунке 8, осуществляется управление пользователями и группами. На данной странице отображаются все пользователи, зарегистрированные на сервере, и стандартный набор операций над ними (создание, редактирование, удаление).
Рисунок 8. Сводная информация о пользователях
Для перехода в меню User Properties (настройки пользователя), изображенное на рисунке 9, необходимо щелкнуть левой кнопкой мыши по имени пользователя.
Рисунок 9. Информация о конкретном пользователе
Выбрав пункт меню Roster можно редактировать список контактов выбранного пользователя. Управление списками для групп осуществляется на вкладке Groups. При выборе группы в нижней части экрана отображается список входящих в нее пользователей. На этом же экране задается видимость группы в списках контактов остальных пользователей, как показано на рисунке 10.
Рисунок 10. Управление видимостью группы
OpenFire также позволяет создавать групповые чаты, так как в сервер по умолчанию уже встроен сервис Conference для создания групповых чатов. Чаты создаются в меню Room Administration (Администрирование комнат для чата), как показано на рисунке 11. Пример отображения конференций представлен на рисунке 15.
Рисунок 11. Создание нового чата
Установка плагинов
Некоторые из функций OpenFire доступны только при установке соответствующих плагинов, которые можно скачать с официального сайта разработчика. Установка плагинов выполняется из консоли администратора на вкладке Plugin, изображенной на рисунке 12.
Рисунок 12. Форма для управления плагинами
Установить плагин можно, выбрав jar-файл, загруженный с сайта, или перейдя на вкладку Доступные плагины и выбрав требуемый плагин. После этого, если установка плагина завершилась без ошибок, будет показано сообщение, изображенное на рисунке 13. Новый плагин может не сразу появиться в списке установленных, так что иногда требуется подождать.
Рисунок 13. Форма для управления плагинами
Ниже приведен список наиболее часто используемых плагинов:
- Broadcast — для рассылки массовых сообщений;
- Search — дает возможность обработки поисковых запросов пользователей;
- User Import Export — выгрузка и загрузка данных пользователей;
- IM Gateaway — плагин для транспорта других протоколов;
- Registration — возможность самостоятельной регистрации пользователей;
- Monitoring service — включает возможность создания различных отчетов и сбор статистики сервера, а также сохранение истории переписки пользователей.
Установка и настройка Jabber-клиентов
В сети опубликовано огромное множество клиентов для Jabber. В рамках данного цикла будет использоваться кроссплатформенный клиент Spark, так как он ориентирован на работу с сервером OpenFire, стабилен в работе и обладает дружественным интерфейсом. Так же преимуществом связки OpenFire и Spark является то, что все плагины клиент получает непосредственно с сервера.
Дистрибутив Spark можно загрузить с официального сайта. На данный момент последней является версия Spark 2.5.8.
Установка Spark под Windows
Для скачивания доступны две версии установочных пакетов: offline-версия, включающая в себя Java JRE, необходимую для работы Spark, и online-версия. Если пакет Java JRE отсутствует на компьютерах пользователей, то рекомендуется использовать offline-версию. После загрузки достаточно запустить инсталляционный файл spark_2_5_8.exe и следовать действиям мастера установки.
Установка Spark под Linux
В данном случае потребуется загрузить архив с кодом клиента, а затем распаковать архив с помощью следующей команды:
После этого в каталоге, содержащем архив, появится подкаталог Spark. Запуск клиента осуществляется путем запуска сценария Spark, который находится в этом каталоге.
При первом запуске программы будет показано окно для ввода имени пользователя (часть JID’a до знака @), пароля и адреса сервера, изображенное на рисунке 14. Также в этом окне можно установить флаги для сохранения пароля и автоматического входа.
Рисунок 14. Форма для подключения к Jabber-серверу
При нажатии кнопки «Дополнительно» появится окно дополнительных настроек, в котором можно указать расширенные параметры подключения: порт для подключения и настройки прокси-сервера. После нажатия кнопки Подключение откроется окно клиента, в котором будет отображаться предварительно настроенный список контактов и доступные конференции, как показано на рисунке 15.
Рисунок 15. Активный сеанс в Jabber-клиенте Spark
Заключение
С помощью свободно распространяемого программного обеспечения можно организовать обмен сообщениями по протоколу Jabber в корпоративной локальной сети. Данное решение может быть гибко настроено под конкретные нужды и без проблем интегрироваться в уже существующую информационную систему. Особую привлекательность данному решению придает то, что оно практически не требует сколь-нибудь значимых экономических затрат на программное обеспечение и оборудование.