Локальний IM-сервер - OpenFire - Adminські Skазки
Локальний IM-сервер - OpenFire
Те, що зароджувалося як засіб особистої розваги, згодом перетворилося на дуже зручний інструмент для ділового спілкування. Йдеться про служби обміну миттєвими повідомленнями. Для "глобального" обміну є стандарти де-факто, і з їхніми вадами доводиться миритися, проте при організації обміну повідомленнями всередині організації це зовсім необов'язково.
Дозволяючи ICQ-трафік усередині організації, ми отримуємо досить проблемний сервіс:
А що якщо перемістити ICQ-сервер із глобальної мережі до локальної? Цим шляхом пішли розробники системи SIQ. Але що, якщо піти ще далі і відмовитися від протоколу ICQ? Адже AOL у будь-який момент може змінити протокол, і з локальним сервером працюватимуть лише старі версії клієнтів. Оптимальним вибором у разі представляється відкритий протокол, підтримуваний максимально широким рядом клієнтів. Це Jabber.
Jabber має ряд переваг у порівнянні з комерційними системами IM (інформація з Вікіпедії):
- Відкритість: протокол Jabber відкритий, загальнодоступний та досить легкий для розуміння; існує безліч реалізацій серверів та клієнтів, а також бібліотек з відкритим вихідним кодом.
- Розширюваність: за допомогою просторів імен у XML можна розширити протокол Jabber для виконання необхідних завдань та забезпечення підтримки взаємодії між різними системами. Загальні розширення розробляють під контролем Jabber Software Foundation.
- Децентралізованість: будь-хто може запустити свій власний сервер Jabber, що дозволяє організаціям та приватним особам займатися будь-якими експериментами з IM.
- Безпека: будь-який сервер Jabber може бути ізольований від загальнодоступної мережі Jabber,Багато варіантів реалізації сервера використовують SSL при обміні між клієнтом і сервером, і чимало клієнтів підтримують шифрування за допомогою PGP/GPG всередині протоколу.
Отже, для реалізації внутрішньої Jabber-служби з обміну повідомлення необхідно визначитися із серверною частиною. Основних (досить потужних і водночас безкоштовних) претендентів два: OpenFire та ejabberd. OpenFire обіграє опонента з функціональності, а також динаміки розвитку. І незважаючи на недоліки OpenFire (наприклад, вищі вимоги до обчислювальних ресурсів), я зупинив свій вибір саме на цьому продукті.
Процес розгортання OpenFire складається з наступних кроків:
- Встановлення СУБД;
- Встановлення та первинне налаштування OpenFire;
- встановлення плагінів, що розширюють функціональність сервера;
- Додавання та організація користувачів.
Встановлення СУБД.
Встановлення та первинне налаштування OpenFire.
OpenFire створений на базі Java-технологій і потребує сервера додатків (JRE). Існують дві версії дистрибутива пакета – з JRE і без такого. Для запобігання проблемам, пов'язаним із сумісністю версій продуктів, рекомендую встановлювати версію з JRE. Інсталяція OpenFire виробляється всього кількома клацаннями миші, ніяких параметрів, окрім шляху встановлення, не потрібно задавати. Після закінчення копіювання файлів запускається вікно диспетчера сервера:

Натискаємо кнопку Launch Admin. Відкриється вікно браузера зі сторінкою первинного налаштування сервера. Первинне налаштування складається з наступних кроків:
1. Вибираємо мову адміністративної панелі;

3. Налаштовуємо базу даних. Перший пункт - standart database connection передбачає підключення до зовнішньої БД, другий (embedded) -Використання внутрішнього механізму зберігання даних.


4. Налаштовуємо профіль. Спочатку необхідно вибрати, де зберігатиметься інформація про групи та користувачів:


Після натискання кнопки Next переходимо до двох підпунктів: User Mapping та Group Mapping. Тут можна задати відповідність полів в AD та OpenFire, а також визначити фільтр по групі користувача, щоб OpenFire не працював зі службовими групами AD:



Хоча інсталяцію завершено, необхідно вручну виправити один конфігураційний файл. Якщо цього не зробити, кирилиця в іменах користувачів та груп (при Default-форматі профілів), а також "відкладені" повідомлення будуть відображатися ієрогліфами-крякозябликами через помилку в кодуванні. Відкриваємо файл \conf\openfire.xml у папці програми. Шукаємо рядок, що визначає базу даних: "jdbc:mysql://host_name:3306/base_name", після чого наводимо її до виду "jdbc:mysql://host_name:3306/base_name?characterEncoding=UTF-8". До речі, якщо ви захочете перезапустити процедуру первинної установки сервера, в цьому ж файлі поправте "true" на "false".
Встановлення плагінів, що розширюють функціональність сервера.
Натискаємо "Огляд", вказуємо на jar-файл плагіна, після чого натискаємо "Upload plugin". У разі успішного встановлення з'явиться повідомлення:
До речі, одразу новий плагін може і не з'явитися у списку встановлених. Потрібно просто зачекати, повторення процедури встановлення не допоможе. Рекомендую встановити такі плагіни:
- Broadcast - Функція розсилки масових повідомлень;
- Search - Підтримка пошукових запитів користувачів;
- User Import Export - Вивантаження та завантаження даних користувачів;
- IM Gateway -Можливість обміну повідомленнями із глобальними мережами на кшталт ICQ;
- Registration - Самостійна реєстрація користувачів.
Додавання та організація користувачів.
Користувачі OpenFire організовуються до груп. На момент написання матеріалу створення вкладених груп не допускається. Окремі групи можна призначити поширення, тобто. контакти всіх користувачів, які перебувають у групі, будуть примусово додані в IM-клієнти користувачів з інших груп.
Найпростіше зробити так: створити групи, що відповідають відділам організації, та створити групу "Все". Кожен користувач при цьому перебуватиме як у групі свого відділу, так і у групі "все". Далі кожної групи відділу призначається поширення групу " Усі " . Таким чином, кожен користувач у своєму IM-клієнті отримає повний список контактів, що автоматично оновлюється при кожному запуску клієнта. Звісно, якщо організація занадто велика, можливо обмежити область видимості контактів, реалізувавши іншу схему передплати поширення.
Розглянемо випадок із Default-профілем. Випадок з LDAP відрізняється лише тим, що не потрібно заводити користувачів та створювати групи. Входимо в розділ Users/Groups адмінпанелі та натискаємо Create new user. Заповнюємо всі поля користувача, після чого натискаємо Create & Create another. Таким чином додаємо всіх користувачів.

Далі переходимо до створення груп. Натискаємо Create new group, вводимо назву групи та найменування, і натискаємо Create group. Після створення всіх груп натискаємо Group Summary, і заходимо у властивості всіх груп поспіль. У властивостях групи відзначаємо опцію "Share group with additional users" і вибираємо варіант "The following groups:". Потім нижче у списку групвибираємо "Все".

Ви скажете: "Набагато простіше вибрати опцію "All Users", і не морочитися з групою "Все"? Справді, так воно, може, і простіше. Ось тільки через деякий час може знадобитися розширити область застосування чату, і нинішня "All Users" вийде вам боком Групу "Все" можна просто перейменувати надалі в "Головний офіс", наприклад, або "Департамент Х". Далі в цьому ж вікні додаємо користувачів до групи: просто набираємо ім'я користувача, і натискаємо "Add":

До речі, зовсім необов'язково наповнювати гурт "Все" вручну. Після наповнення всіх інших груп підключаємося до БД і зберігаємо таблицю бази jivegroupuser у зручному для нас форматі (CSV чи XML). При моєму випадку з базою MySQL я можу користуватися як програмами типу Webyog SQLyog Enterprise, так і засобами phpMyAdmin, що входить в XAMPP. Далі редагуємо в екселі таблицю (просто дублюємо вниз список користувачів та заповнюємо поле імені групи словом "Все"). І нарешті – закачуємо таблицю на місце.
Готово. Можна ставити клієнтів на машини користувачів та починати переписуватися! У наступних матеріалах я опишу тонке налаштування сервера, а також створення власного складання IM-клієнта для застосування всередині організації.