Мессенджер без интернета: обновление интранет-чата 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


Программа не работает с национальными символами 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, Java, Telegram, 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. Нет версий под Linux, macOS и 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 раз в год. Больше полумиллиона реальных пользователей из России, Украины, Беларуси, Молдовы, Казахстана, США, Канады, Индии, Великобритании и других стран. Реальные большие отзывы покупателей.


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