Настройки устаревших клиентов
HandyCafe может работать рядом со старыми клиентскими установками V3 и V4 без сбоев. Страница настроек устаревших клиентов управляет двумя отдельными возможностями:
- Протокол времени выполнения. Включает сетевые слушатели, которые позволяют клиентам V3 и V4 подключаться к этому серверу на своих исходных портах.
- Миграция базы данных. Необязательно импортирует участников, тарификацию, товары, заказы, транзакции и журналы из старой локальной установки в новую базу данных HandyCafe. Работает только в Windows.
Эти две возможности независимы. Можно включить поддержку времени выполнения без миграции данных, выполнить миграцию без включения поддержки времени выполнения или сделать и то и другое.
Раздел протокола времени выполнения
Включить поддержку устаревших клиентов
Главный переключатель в верхней части раздела. Когда он включен, сервер запускает три сетевых слушателя:
- UDP-слушатель на настроенной multicast-группе.
- TCP-слушатель команд на
UDP port + 2. - TCP-слушатель передачи файлов на
UDP port + 7.
Если переключатель выключить, все три слушателя останавливаются атомарно. Пока они отключены, можно изменить номера портов или кодировку, а затем снова включить их, чтобы применить изменения.
Поля конфигурации
| Поле | По умолчанию | Описание |
|---|---|---|
| Auth Key | HANDYCAFE | Общий ключ длиной 10 символов. Каждая входящая и исходящая рамка содержит эту строку. Рамки, которые не совпадают, отбрасываются. Все устаревшие клиенты должны использовать один и тот же ключ. |
| UDP Multicast IP | 230.4.4.46 | Multicast-группа, используемая для beacon-сообщений обнаружения клиентов и для отправки команд по UDP. Жестко задана в большинстве старых сборок клиента. |
| Server UDP Port | 710 | UDP-порт, на котором сервер слушает beacon-сообщения и команды клиентов. Устаревшие клиенты отправляют данные на этот порт. |
| Client UDP Port | 711 | UDP-порт, на котором слушают устаревшие клиенты. Сервер отправляет однокастовые команды управления на этот порт на обнаруженный IP клиента. |
| Encoding | cp1254 | Кодировка символов для строковых полей в сетевом формате. Используйте cp1254 для турецких установок, cp1252 для западноевропейских. Неизвестные значения откатываются к cp1254 с предупреждением в журнале сервера. |
| Server Version | 3.4.01 | Строка версии, которая рассылается в каждом UDP-beacon. Некоторые устаревшие клиенты отвергают рамки от версий, которых они не распознают. Укажите здесь строку версии вашего исходного сервера. |
| Protocol Variant | STE | Выбор формата передачи. См. сравнение вариантов ниже. |
| Inactivity Timeout | 10 | Секунды. Сторожевой таймер для каждого MAC. Если от клиента не приходит трафик в течение этого окна, клиент помечается как offline. Интервал в 10 секунд подходит для устаревших клиентов, которые шлют beacon каждые 2--3 секунды. |
Производные порты
Под формой показана строка только для чтения с производными TCP-портами:
TCP Command Port: 712 File Transfer Port: 717
Эти порты вычисляются из UDP-порта сервера. Отдельно настраивать их не нужно. Если вы измените Server UDP Port на другое значение, производные порты сместятся вместе с ним.
Вариант протокола
Поле Protocol Variant выбирает формат передачи, который использует сервер. Выбирайте вариант, соответствующий тому, как была собрана ваша старая серверная установка.
| Вариант | Когда использовать |
|---|---|
| STE (Smart/Turbo Edition) | Современная устаревшая кодовая база. Добавляет 70-байтный префикс license-info к структуре рамки. Размер рамки - 1337 байт. Выбирайте этот вариант, если ваша старая установка была Smart или Turbo edition. |
| Standard | Обычная базовая старая сборка. Размер рамки - 1267 байт без префикса license-info. Выбирайте только если ваша старая установка была Standard edition без регистрации лицензии. |
Если выбрать неверный вариант, рамки будут отброшены или прочитаны неправильно. Симптомы: клиенты выглядят онлайн, но игнорируют все команды, либо данные команд смещены на 70 байт.
Совместимость с современными клиентами
Устаревшие порты (710, 711, 712, 717) полностью отделены от современных портов протокола HandyCafe (TCP 5001, 5002, 5003, UDP 5004). Оба стека протоколов работают одновременно без конфликтов. Вы можете смешивать старые и новые клиенты в одной LAN и управлять ими из одной Панели администратора.
Применение изменений
Каждое поле в разделе Протокола времени выполнения сохраняется общей кнопкой Сохранить внизу страницы. При сохранении сервер:
- Останавливает три устаревших слушателя, если они были запущены.
- Проверяет ключ авторизации (он не должен быть пустым).
- Собирает новые конфигурации слушателей на основе обновленных полей.
- Перезапускает слушатели параллельно.
- Показывает уведомление, когда все три снова онлайн.
Если какой-то порт уже занят другим процессом, сервер сообщает об ошибке, а переключатель возвращается в выключенное состояние. Проверьте брандмауэр и другие службы с помощью netstat и выберите свободный диапазон портов.
Раздел миграции базы данных (только Windows)
Эта возможность доступна только тогда, когда HandyCafe работает в Windows. В macOS и Linux в разделе показывается сообщение: "Миграция базы данных поддерживается только в Windows."
Обнаружение
При открытии сервер сканирует систему в поисках старой установки. Обнаружение ищет здесь:
- В реестре и типичных путях установки, например
Program Files\\HandyCafeиC:\\HandyCafe. - В файле базы данных рядом с установкой.
- В INI-файлах конфигурации в каталоге установки.
Когда обнаружение успешно завершается, страница показывает:
| Метка | Значение |
|---|---|
| Install Path | Где на диске находится старая установка. |
| Database Path | Полный путь к старому файлу базы данных. |
| Server Version | Версия, прочитанная из старой конфигурации. |
| INI File Count | Количество обнаруженных конфигурационных файлов. Полезно для быстрой проверки, что установка полная. |
Если установка не обнаружена, страница показывает "No legacy installation detected." Поддержку времени выполнения все равно можно включить; просто импортировать будет нечего.
Статус миграции
На странице хранится история миграции:
| Статус | Значение |
|---|---|
| never | Миграцию еще не запускали. |
| in_progress | Миграция сейчас выполняется. Не закрывайте сервер в этом состоянии. |
| completed | Последняя миграция завершилась без предупреждений. |
| completed_with_warnings | Последняя миграция завершилась, но некоторые записи были пропущены, например из-за ошибок кодировки или некорректных дат. Перед продолжением проверьте предупреждения. |
| undone | Последняя миграция была откатана. |
После первого успешного запуска кнопка Start Migration переименовывается в Re-run Migration.
Что мигрируется
| Таблица | Описание |
|---|---|
| Members | Записи клиентов с именами, контактами и балансами аккаунта. |
| Pricing | Таблицы цен и почасовые ставки. |
| Products | Записи каталога товаров. |
| Orders | История заказов со ссылками на сеансы. |
| Transactions | Проводки с временными метками, суммами и способами оплаты. |
| Logs | Записи аудита и предупреждений из старой базы данных. |
Гарантия "файлы в безопасности"
На странице синим текстом показывается сообщение: "Исходные файлы базы данных не удаляются. Их можно безопасно удалить после подтверждения миграции." Миграция работает только для чтения источника. Даже если вы запускаете ее несколько раз, исходная старая база данных остается нетронутой. Это позволяет экспериментировать с импортом, проверять количество записей и откатывать изменения без риска.
Start, Re-run и Undo
- Start Migration. Открывает окно прогресса. В нем показываются текущий этап и количество уже импортированных записей. Не закрывайте HandyCafe во время этого процесса.
- Re-run Migration. Доступно после завершенного запуска. Повторно запускает импорт с нуля. Новый импорт заменяет предыдущие данные в HandyCafe.
- Undo Migration. Доступно после завершенного запуска. Открывает диалог подтверждения. После подтверждения каждая мигрированная строка удаляется из HandyCafe. Исходник не затрагивается. После отката статус снова становится
never.
Completed with Warnings
Если миграция завершается со статусом completed_with_warnings, появляется желтая плашка со ссылкой Details. Нажмите ее, чтобы раскрыть список пропущенных записей с причиной. Частые причины:
- Несовпадение кодировки. В исходной строке есть символы, которые не декодируются в выбранной кодировке. Измените поле Encoding (cp1254 или cp1252) и запустите миграцию снова.
- Некорректные даты. У некоторых старых записей недопустимые временные метки. Они пропускаются, чтобы корректные строки все равно импортировались.
- Дублирующиеся ключи. Запись с таким же идентификатором уже существует в HandyCafe. Миграция сохраняет существующую запись и пропускает дубликат.
Советы
- Останавливайте старый сервер перед миграцией. Если старая система все еще пишет в свою базу данных, импорт может увидеть устаревшие или частичные данные.
- Перед первой миграцией сопоставьте поле Encoding с локалью старой системы. Если изменить его после импорта, уже испорченные имена это не исправит.
- Всегда сначала запускайте тестовую миграцию. Проверьте количество записей в "Last Counts" и выборочно сравните несколько строк участников и транзакций, прежде чем переводить персонал на новую систему.
- Включите поддержку времени выполнения и оставьте старые клиенты подключенными на переходный период. Так вы сможете убедиться, что новый сервер обслуживает их так же, прежде чем отключать старый сервер.
- Если вы меняете Server UDP Port, помните, что вместе с ним меняются производные порты команд и передачи файлов. Правила брандмауэра тоже нужно обновить.