Месенджер без інтернету: оновлення інтранет-чату UniChat

Інтерфейс UniChat

UniChat — це невеликий безкоштовний чат для локальних мереж. Вміє працювати без сервера, тільки в локальній мережі (intranet) по протоколу UDP, використовуючи широкомовні пакети, а також із сервером Intranet Chat, по TCP. В цьому випадку можна підключити людей із декількох підмереж або через інтернет. Разом із сервером програма працює стабільніше.

На жаль, розробка UniChat зупинена, офіційний сайт не працює, а автор віддав початкові тексти в публічне використання, однак свіжі версії так і не з'явились.

В Юнічаті є цікаві рішення типу автоматичного перекодування тексту, надрукованого в неправильній розкладці (цю задачу зараз добре вирішує Punto Switcher) або текстові команди для управління роботою програми на кшталт /topic, /join чи /whois.

Програма безкоштовна, але потребує активації. Схема активації схожа на "donateware". Щоб активувати, потрібно ввести ім'я "UniChat" і ключ "forever freeware". Можна перераховувати символічну суму автору на WebMoney-гаманець. Правда, щоби пункт активації зник в головному меню, UniChat необхідно перезавантажити (Alt+X).

Огляд написаний для останньої доступної версії UniChat 1.45.0.244 від 3 березня 2006 року. Порівнюємо з безкоштовним офісним чатом MyChat версії 7.7 від 21 серпня 2019 року. Розповідаємо про помилки і проблеми Юнічату і пояснюємо, чому варто перейти на месенджер MyChat.

  1. Стислий огляд проблем UniChat
    1. Немає інсталятора, немає цифрового підпису
    2. Проблеми з UNICODE
    3. Втрата користувачів, проблеми широкомовлення
    4. Помилки в інтерфейсі Юнічату
    5. Проблеми в терміналі та неможливість запуску двох копій Юнічату
    6. Логи пишуться у папку з програмою
    7. Немає сповіщень щодо нових повідомлень
    8. Проблеми з безпекою
  2. Порівняння UniChat і чату для командної роботи MyChat
  3. Рекомендації щодо переходу на MyChat

1. Стислий огляд проблем UniChat


Відсутність підтримки національних символів (UNICODE), немає цифрового підпису, глюки інтерфейсу, недоліки технології, технічні обмеження і помилки, котрі вже ніколи не будуть виправлені, тому що розробка проекту зупинилась. Іншими словами, стандартна купа проблем більшості покинутих проектів.

Отже, поїхали.


1.1. Немає інсталятора, немає цифрового підпису


Я не знаю, чому автор UniChat вирішив не робити установник. З однієї сторони, це зручно, тому що всі налаштування програма зберігає в реєстрі, в папці \Scripts є bat-файли (SaveSettings.bat і RestoreSettings.bat) для збереження і вивантаження налаштувань програми, а значить, можна один раз підготувати reg-файл із шаблоном опцій, а потім завантажувати його в реєстр усім користувачам, вручну або через GPO.

З іншого боку, MSI пакету немає, в домені чат не розгорнути. Звичайного установника теж немає, а значить, будь-які дії по автоматизації процесу інсталяції доведеться робити самостійно, вигадуючи черговий "велосипед".

У самого виконуючого модуля unichat.exe немає цифрового підпису:

Цифровий підпис UniChat

Це погано, тому що в більшості компаній установлення будь-якого software без digital signature заборонена політикою безпеки. Плюс на такі програми більшість антивірусів "дивляться косо".


1.2. Проблеми з UNICODE


Локалізація UniChat лише російською мовою. Програма не працює із національними символами UNICODE, відправляючи такі повідомлення, програма їх "ламає", перетворюючи на знаки питання. Ієрогліфи нам, звичайно, не такі близькі, але те ж саме буде з німецькою, польською та іспанською мовами:

UNICODE і UniChat

Це дивно, тому що компонент TRichView, котрий використовує UniChat, вміє працювати з юнікодом.

Якщо скопіювати текст із вікна з повідомленнями за допомогою контекстного меню "Скопировать всё":

Копіювання тексту в UniChat

… то в Блокнот вставляється наступне:

Копіювання тексту UniChat в Блокнот

Причому, якщо виділити мишкою шматок тексту ("Ctrl+C" не працює, програма миттєво копіює виділений фрагмент у буфер обміну), то його можна вставити в інші програми в нормальному вигляді, кодування не псується.


1.3. Втрата користувачів, проблеми широкомовлення


Користувачі зникають із загального списку контактів у довільні моменти часу, хоча знаходяться онлайн. В цілому — це проблема технології широкомовлення, коли програма одночасно і сервер, і клієнт. Щоразу вона вимушена транслювати однакові пакети через UDP на всю мережу, а не конкретному комп'ютеру.

Оскільки немає центрального сервера, то нікому надійно спостерігати за наявністю людей онлайн, а також займатися доставкою повідомлень.

Варто сказати, що UniChat уміє працювати з безкоштовним сервером Intranet Chat (стандартний TCP порт 6666), для цього в налаштуваннях програми можна вказати адресу сервера і програма буде з'єднуватись на нього. Проте проблеми все рівно залишаться, але вже дещо інші.

Мережеві налаштування UniChat

В такому випадку ви зможете об'єднати декілька різних сегментів мереж і навіть підключити людей через інтернет, якщо є зовнішня IP адреса. Про шифрування повідомлень, звичайно, мова не йде, але все ж це краще, аніж постійний broadcast трафік всередині локальної мережі.

Однак, якщо з'єднання із сервером за будь-яких причин перервалось, то всі повідомлення, котрі ви будете набирати та відправляти — будуть втрачені, програма просто "поглинає" та ігнорує:

Розрив з'єднання в UniChat

Стандартно налаштування переходу на широкомовлення під час відсутності сервера вимкнена, тому чат показує повідомлення, що сервера немає, обіцяє спробувати знов через 3 секунди, але зупиняється і не продовжує.

Якщо конект з'явиться, програма вже не повернеться на сервер, повторна спроба з'єднання відбудеться лише після перезавантаження Юнічату.

З цього всього можна зробити висновок, що підтримка сервера — експериментальна можливість, і автор не сприймав цю технологію як надважливу під час розробки. Звідси і недоробки.


1.4. Помилки в інтерфейсі Юнічату


Доволі великий розділ помилок і недоробок. Перерахуємо основні, що одразу "кидаються в очі".

Багаторядкові повідомлення не працюють, програма видаляє переноси рядків і з'єднує увесь текст в один рядок:

Багаторядкові повідомлення UniChat

Це дивно, тому що багаторядкові повідомлення є на дошці оголошень, їх можна додати за Ctrl+Enter або через вставку тексту "\n" для переноса рядка. Великі повідомлення програма "обрізає" без сповіщень і відправляє лише шматок, ігноруючи решту тексту.

"Послать ссылку" на файл не працює:

Неробочий лінк UniChat

У багатьох вікнах текст заголовку не влазить і доводиться здогадуватись, що там написано:

Діалогове вікно UniChat

Якщо викликати діалогове вікно, а потім натиснути "Alt", то кнопки "Ок" і "Cancel" (які чомусь не перекладені російською мовою) зникають і вже не з'являються:

Привілеї UniChat

Це відбувається у всіх вікнах:

Проблеми з кнопками в UniChat

Причому, якщо викликати вікно з клавіатури (комбінації клавіш наявні не для всіх вікон програми), то все Ок, проблеми будуть лише під час роботи мишкою.

Архів повідомлень в UniChat

Пошук повідомлень у архіві не працює, якщо почати набирати щось, у вікні показується абракадабра:

Пошук у архіві повідомлень UniChat

Це було слово "привіт".

Якщо ввійти в першу за рахунком конференцію ("Основной") і через головне меню обрати "Покинуть текущий канал" (Shift+F4), програма завершить свою роботу. Несподівана поведінка.

Канали UniChat

Якщо виставити режим "Ушёл" чи будь-який інший, то після перезавантаження програми UniChat залишається з тим самим режимом, і не переключається на "Активен". Це очевидна недоробка, тому що людина може просто забути переключити назад режим роботи і залишитись у статусі "Не беспокоить" або "Отключен" назавжди.

На дошці оголошень не можна розмістити декілька оголошень від одного й того ж самого користувача, текст оголошення одразу змінюється на нове повідомлення, навіть якщо ви напишете його через деякий час, а не в ту ж хвилину:

Дошка оголошень UniChat

Причому, якщо натиснути Enter, не написавши нічого, текст вашого оголошення буде миттєво видалено.

Якщо відкрити діалог з будь-ким, а потім на іншій стороні закрити його, то в чаті покажеться, що бесіда закінчена. Але відновити діалог не вдається, повідомлення йдуть в нікуди:

Діалоги UniChat

В програмі на скріншоті ліворуч я пишу й відправляю повідомлення, праворуч – ніяких сповіщень про це.

Мультикаст-повідомлення можна відправити самому собі:

Відправка повідомлень самому собі в UniChat

Якщо закрити програму, а потім заново запустити та відкрити розмову з людиною, маючи надію продовжити бесіду, ми побачимо порожнє вікно:

Порожній діалог в UniChat

Історія не завантажується у вікно діалогу, крім того, її не можна побачити взагалі ніяк, клавіша F3 не працює. А все тому, що приватні діалоги стандартно не протоколюються. Але це можна ввімкнути в налаштуваннях, після чого історія буде записуватись у текстовий файл у папці "\Logs" поруч із unichat.exe.

Вбудований плагін "АнтиКАПС" для вихідного тексту не працює:

АнтиКАПС в UniChat

Капс UniChat


1.5. Проблеми в терміналі та неможливість запуску двох копій Юнічату


По-перше, UniChat не працює в термінальних сесіях. Він працює на одному й тому ж самому UDP порту, і копії програми будуть блокувати одна одну.

Здавалося, використовувати сервер IChat, з'єднуватись із ним по TCP — і проблема вирішена. Проте ні.

Не можна запускати дві програми unichat.exe, навіть із різних папок або під різними користувачами. Якщо програма запускається повторно, то попередня копія не активується, просто ігнорується запуск. В логах ніякого повідомлення про це немає.


1.6. Логи пишуться у папку з програмою


Формально, це не проблема, тому що та версія, котру можна знайти в інтернеті — по суті, portable-варіант. Логічно, що протоколи роботи та історія пишуться в ту ж папку, де встановлена програма (\Logs\).

Але проблема в тому, що логи ніяк не розділяються, все валиться вперемішку. Не важливо, під яким ми користувачем працюємо, до якого сервера підключаємось.

Все пишеться у відкритому вигляді, в одні й ті ж самі текстові файли в кодуванні win1251 (UNICODE не підтримується).

Правильно було б дозволити міняти папку з логами в налаштуваннях, а зовсім правильно — писати протоколи в локальний профіль Windows-користувача. Це б дало можливість не змішувати протоколи роботи для різних користувачів комп'ютера.


1.7. Немає сповіщень щодо нових повідомлень


Програма не вміє сигналізувати про те, що вже є свіжі непрочитані повідомлення. Так, іконка в треї блимає, але в Windows 7 і старше вона може бути автоматично схована, а індикатор Scroll Lock наявний далеко не на всіх сучасних клавіатурах (UniChat вміє блимати цим індикатором, вмикається в налаштуваннях). Спливаючих вікон-повідомлень в треї немає.

Якщо програма відкрита, наприклад, на закладці "Основной", а вам написала людина в приватному діалозі, то ви про це не дізнаєтесь, програма візуально ніяк цього не показує, потрібно зайти в закладку й подивитися, чи не з'явилось там нових повідомлень:

Сповіщення UniChat

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

Налаштування панелі задач UniChat


1.8. Проблеми з безпекою


Оскільки в UniChat немає системи прав і обмежень, котра налаштовується і управляється із сервера (інтеграція з IChat не враховується, вона в зародкову стані), то будь-який користувач може отримати конфіденційні дані інших людей. Прослуховуючи трафік сніфером чи просто ввімкнувши потрібне налаштування у самій програмі:

Безпека UniChat

Можна дізнатись про заголовок активного вікна, Windows-логін користувача, IP адрес віддаленого комп'ютера, його NetBIOS ім'я, версію операційної системи й навіть кількість оперативної пам'яті. Правда, варто зауважити, що програма визначає останній параметр неправильно.

Через те, що в чаті використовується UDP широкомовлення, дані транслюються на всю мережу, а не тільки конкретному адресату. Відповідно, повідомлення може потрапити в чужі руки.

Вся переписка також не шифрується і зберігається у відкритому вигляді в папці \Logs\ у текстових файлах.


2. Порівняння UniChat і чату для командної роботи MyChat


В таблиці порівнюємо базові можливості UniChat версії 1.45.0.244 від 3 березня 2006 року й MyChat 7.7 (безкоштовної версії) від 21 серпня 2019 року.

Можливість UNIChat MyChat
Установка, видалення і оновлення
1.1 Інсталятор Немає Є
1.2 Деінсталятор Немає Є
1.3 Автоматична установка Немає Є
1.4 Система автоматичного оновлення Немає Є
1.5 Автоматичне оновлення та збереження усіх даних під час встановлення найновішої версії поверху старої Немає, нових версій немає Є
1.6 Portable-версія Є, тільки одна Є
Мережеві можливості
2.1 Робота у великих мережах Є, тільки через IChat Є
2.2 Робота у складних мережах і через Інтернет Є, тільки через IChat Є
2.3 Гарантована доставка повідомлень Немає Є
2.4 Робота термінальних сесіях Немає Є
2.5 Шифрування трафіку Тільки конференції, потрібно вводити ключ OpenSSL
2.6 Робота в дуже поганих мережах (супутниковий зв'язок, "довгі" пінги) Немає Є
Стандартні функції
3.1 Персональні повідомлення Є Є
3.2 Статуси повідомлень (отримано, прочитано) Немає Є
3.3 Текстові конференції Є Є
3.4 Сповіщення з контролем прочитання Є, без контролю Є
3.5 Загальна дошка оголошень Є Є
3.6 Обмін файлами Немає Є
3.7 Передача зображень Немає Є
3.8 Автоматичне підсвічування лінків в тексті Частково Є
3.9 Перегляд історії повідомлень Частково, лише особисті Є
3.10 Звукове інформування про події Є Є
3.11 Особистий список контактів Немає Є
3.12 Відправка повідомлень і файлів користувачам, котрих немає в мережі Немає Є
3.13 Графічні смайли Є, статичні Є
3.14 Голосові дзвінки Немає Є
3.15 Відео дзвінки Немає Є
3.16 Демонстрація екрана Немає Є
Інтеграція з Active Directory
4.1 MSI пакет для розгортання через групові політики Немає Есть
4.2 Прозора авторизація користувачів Немає Є
4.3 Імпорт користувачів із Windows-домену Немає Є
4.4 Підтримка будь-якої кількості різних доменів Немає Є
4.5 Спільна робота "звичайних" та доменних користувачів Немає Є
Налаштування зовнішнього вигляду
5.1 Мови інтерфейсу Немає Є, UNICODE
5.2 Кастомізація зовнішнього вигляду Є Є
5.3 Зміна шрифтів Є Є
Адміністрування
6.1 Централізоване налаштування прав та обмежень користувачів Немає Є
6.2 Групи користувачів Немає Є
6.3 Фільтри "поганих" слів Є Є
6.4 Фільтри по IP, MAC, Hardware ID Є, тільки по IP Є
6.5 Антиспам та антифлуд фільтри Є Є
6.6 Система управління користувачами Немає Є, WEB-інтерфейс
6.7 Детальна довідкова інформація про користувачів (ПІБ, email, телефони, дата народження, фото і т.д.) Немає Є
Операційні системи
7.1 Windows Є Є
7.2 Android Немає Є
7.3 Linux Немає Є
7.4 macOS Немає Є
7.5 WEB Немає Є
Додаткові можливості
8.1 Мережеві статуси користувачів "вільний", "зайнятий", "немає на місці" Є Є
8.2 Скриптова мова для написання простих програм, що розширюють можливості чату Немає Є
8.3 Інтеграція з зовнішніми сервісами Немає Є (1С, phpBB, REST, php, C#, Delphi, Python, etc.)
8.4 Система пошуку користувачів Немає Є
8.5 Деревовидний загальний список контактів, єдиний для усієї мережі, з необмеженим рівнем вкладеності Немає Є
8.6 Менеджер облікових записів, якщо за однією програмою працює декілька людей Немає Є
8.7 Система ігнорування користувачів Є Є
8.8 Система плагінів для розширення можливостей програми Є Є
8.9 Перелік підрозділів компанії Немає Є
8.10 Перелік посад компанії з сортуванням "начальники — зверху" в списках контактів — в списках контактів Немає Є
8.11 Вбудований форум Немає Є
8.12 Управління проектами Немає Есть, Kanban
8.13 Чат для сайту Немає Є
8.14 Конструктор дистрибутивів Немає Є
Технічна підтримка користувачів програми
9.1 Вбудована довідкова система Є, одна сторінка Є
9.2 Форум технічної підтримки Немає Є
9.3 Підтримка розробників електронною поштою Невідомо Є
9.4 Додаткові матеріали, статті по використанню програми на сайті, блог Немає Є
9.5 Підтримка розробників в Skype, Viber, Telegram, WhatsApp Немає Є
9.6 Підтримка розробників по телефону Немає Є

3. Рекомендації щодо переходу на MyChat


Чому? Чат UniChat для онлайн-спілкування в локальних мережах (інтранет) більше не оновлюється, немає виправлення помилок і підтримки сучасних операційних систем і мобільних платформ Android/iOS. Немає версій під macOS, Linux і WEB. Немає системи адміністрування користувачів і центрального сервера. Немає обміну файлами та фото, дзвінків і надійної системи збереження і синхронізації історії повідомлень.


Як перейти? Для невеликих компаній або бюджетних закладів, до 20 чоловік онлайн, перехід з Юнічату на MyChat пройде з нульовими витратами, тому що стандартна ліцензія MyChat — безкоштовна, без часових обмежень використання (чим відрізняється безкоштовна версія MyChat від комерційної?). MyChat працює одразу після встановлення, "із коробки", а для налаштування не потрібно бути обізнаним в rocket science. Оновлення MyChat Free Edition — безкоштовні. Для бюджетних організацій і компаній з обмеженим фінансуванням це важливо. Можна заощадити на ліцензії та заробітній платі системного адміністратора.

Ціни. Якщо вам потрібно більше 20 чоловік онлайн, то купується сервер на потрібну кількість людей. Клієнтські програми безкоштовні. Одне конкурентне підключення коштує 4 USD. Рік оновлень — безкоштовно, потім підписка на оновлення (2 USD за людину на рік), якщо потрібно отримувати свіжі версії. Окремо купується лише MyChat Guest, конструктор дистрибутивів Distrib Maker, і робот-вікторина.


Служба підтримки. На українській мові, відповіді протягом одного робочого дня в email, телефону і популярних месенджерах. Великий і активний форум підтримки (більше 33 тисяч постів на вересень 2019 року).


Давно на ринку? Перша версія MyChat вийшла в 2004 році. За цей час з'явились аудіо та відео дзвінки, програми під усі популярні ОС, система управління проектами Канбан, внутрішній форум і файловий сервер, інтеграції з 1С, Телеграм і phpBB. Оновлення MyChat стабільно виходять 5-6 разів в рік. Більше півмільйона реальних користувачів з України, Росії, Білорусі, Казахстану, США, Канади, Індії, Великобританії та інших країн. Реальні великі відгуки покупців.

Служба поддержки