Skip to content
IngvarConsultingPublic

About

KeyBridge: аппаратные лицензии 1С через USB HASP на macOS

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

KeyBridge

KeyBridge помогает установленной на Mac программе 1С работать с аппаратной лицензией USB-ключа HASP. Приложение запускает менеджер лицензий в небольшой виртуальной машине Alpine, передаёт ей ключ и управляет включением, остановкой и восстановлением работы.

Исходный код открыт под лицензией MIT. Разработчик — Ingvar Consulting.

Что требуется

  • Mac с Apple Silicon. Текущая сборка рассчитана на macOS 27 и новее; поддержка Intel Mac и более ранних macOS не заявлена.
  • Собственный USB-ключ и установленный клиент 1С для macOS.
  • Полный установщик платформы 1С 8.5.4 или новее для Linux x86-64 с менеджером лицензий rmlic и пакет драйвера HASP aksusbd для Debian/Ubuntu amd64.

Установщики, лицензии, подготовленные пользовательские диски и SSH-ключи не входят в репозиторий или приложение. Пользователь выбирает свои файлы в KeyBridge. Открытая основа Alpine с glibc поставляется вместе с приложением; рабочей VM выделены 128 МиБ памяти и один виртуальный процессор.

Установка

Скачайте файл KeyBridge-…-macOS-arm64.dmg на странице выпусков. Откройте образ, перетащите KeyBridge в «Программы», извлеките образ и запустите приложение из «Программ».

Сборка предварительная: подпись ad-hoc, без Developer ID и нотариализации Apple. Если macOS заблокирует открытие, разрешите запуск KeyBridge в «Системные настройки» → «Конфиденциальность и безопасность». Этот способ описан в инструкции Apple. На Mac с ограничениями организации может потребоваться помощь администратора. Запуск при входе включается в настройках KeyBridge. Регистрация в macOS проверена; сквозная проверка после выхода и нового входа в систему пока не проведена.

Для подготовки VM нужна полная поставка платформы 1С 8.5.4 или новее: в ней появился rmlic. В приложении выберите свои установщики 1С и HASP; ссылки на сайты производителей есть рядом с выбором файлов. Можно выбрать .run, .deb или скачанный ZIP/tar-архив: KeyBridge сам извлечёт нужный компонент, в том числе из вложенного архива. Сразу после выбора проверяются заявленный менеджер лицензий в установщике 1С и содержимое драйвера HASP. Если в архиве несколько подходящих файлов, приложение предложит выбрать один. Установка становится доступна после проверки обоих компонентов.

Для работы готовой сборки Homebrew, Docker и Python не нужны. Пользовательские данные хранятся отдельно от приложения.

Обновление и переустановка выполняются через Finder: завершите KeyBridge и замените KeyBridge.app полной копией из DMG. Подготовленные компоненты и настройки сохраняются. Для удаления выключите запуск при входе, завершите KeyBridge и переместите приложение в Корзину. Если требуется вернуть прежний поиск лицензии в 1С, используйте существующее действие возврата настроек до удаления приложения. Данные KeyBridge в Application Support удалением .app не стираются.

При переходе с beta.3 или более ранней сборки, если она меняла поиск лицензии 1С, сначала выключите раздачу и выполните «Вернуть настройки…» в старой сборке. После замены приложения настройте поиск заново. Старые копии относятся к файлу отдельной версии 1С, а новое действие возврата работает с общей парой файлов.

Состояние проекта

Настройка поиска лицензии изменяет общие /opt/1cv8/conf/rclic.cfg и /opt/1cv8/conf/nethasp.ini для установленных версий 1С. Перед применением приложение показывает пути и назначение файлов, сохраняет исходное состояние для возврата. 1С 8.5.4.1878 получает аппаратную лицензию через общие файлы. Клиент 8.5.1.1529 лицензию не получает: rmlic не заменяет прежний HASP License Manager для старых клиентов. Запись nethasp.ini сама по себе этого не исправляет; эти параметры продолжает читать и новая 1С. Подробности и источник описаны в проверке лицензии.

Автоматическая проверка в 1С 8.5.4 и новее связывает аппаратную лицензию с процессом проверяемого клиента, отдельной базой и менеджером KeyBridge. Если источник определить нельзя, результат остаётся неподтверждённым. Работа служб сама по себе не доказывает получение лицензии. Возможности и ограничения описаны в архитектуре приложения.

Сборка из исходников

Нужны полный Xcode с выбранными developer tools, Python 3, нативный Homebrew с QEMU и работающий Docker с поддержкой сборки Linux amd64. Homebrew, Python и Docker на компьютере конечного пользователя не требуются.

scripts/build-app.sh --output "$HOME/Library/Caches/KeyBridgeDevelopment/build/KeyBridge.app"

Скрипт собирает программу и открытую основу, переносит необходимые библиотеки, подписывает локальную сборку и проверяет зависимости. Результат и временные данные находятся вне репозитория. Действующая сборка не перезаписывается, пока запущены её процессы. Точный состав внешних компонентов проверяется независимо; обновление зависимости требует проверки её происхождения и допустимости поставки.

Проверка состава готового приложения и экспорт исходников:

python3 scripts/source-archive.py --app "$HOME/Library/Caches/KeyBridgeDevelopment/build/KeyBridge.app"

Только экспорт исходников, без установленного приложения:

python3 scripts/source-archive.py --source-only

Архив и результат проверки сохраняются в ~/Library/Caches/KeyBridgeDevelopment/artifacts/. Для другого внешнего каталога можно задать KEYBRIDGE_BUILD_ROOT.

Подготовка выпуска

Из чистого checkout коммита выпуска соберите приложение и создайте установочный образ. Задайте номер сборки выше предыдущего выпуска и храните результаты вне репозитория:

scripts/build-app.sh --output /path/to/KeyBridge.app --version 0.1.0 --build-number 4
python3 scripts/package-release.py --app /path/to/KeyBridge.app --version 0.1.0-rc.1 \
  --output /path/to/new-release-directory

Скрипт упаковки проверяет подпись и зависимости, создаёт DMG, устанавливает из него временную копию и проверяет её. Рабочий диск пользователя не используется. Из метаданных приложения формируется COMPONENT-SOURCES.md со ссылками на исходники нужных версий внешних компонентов. Скачать или приложить их архивы для упаковки не требуется. Наш код и скрипты сборки доступны в репозитории; результат проверки содержит ссылку на точный коммит.

DMG, список ссылок, условия установки, суммы файлов и результат проверки публикуются в GitHub Release с отметкой Pre-release. Нотариализация и проверка первого запуска на отдельном чистом Mac этим скриптом не выполняются.

Проверки

swift test
KEYBRIDGE_TEST_CONTROL="$(swift build --show-bin-path)/KeyBridgeControl" python3 -m unittest discover -s Tests/Controller
python3 -m unittest discover -s Tests/Guest -p 'test_*.py'
python3 -m unittest discover -s Tests/Packaging -p 'test_*.py'

Swift-тесты выполняются на macOS с полным Xcode. Нативный интерфейс проверяется через состояние экранов и реальную отрисовку SwiftUI в NSHostingView; WebKit и Node.js не требуются. Для гостевых команд нужны Python 3 и обычные POSIX-инструменты. CI проверяет исходники без физического ключа, VM и закрытых установщиков. Эти проверки не заменяют испытание реального получения лицензии.

Лицензии компонентов

MIT распространяется на собственный код KeyBridge. QEMU, прошивки, Alpine, glibc и остальные внешние компоненты сохраняют свои лицензии. Ссылки на исходники их версий опубликованы в COMPONENT-SOURCES.md на странице выпуска. Условия и состав поставки описаны в THIRD_PARTY.md.

About

KeyBridge: аппаратные лицензии 1С через USB HASP на macOS

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages