Поддержка ключей HASP в Wine
Ситуация по поддержке ключей HASP в Wine неоднозначна из-за одновременного сосуществования различных поколений ключей, а скорее драйверов к ним, разными способами использования ключей в программах. Встречаются ключи
- HASP 3 (LPT) сетевые и локальные
- HASP 4 (USB) сетевые и локальные
- HASP HL (USB) сетевые и локальные
- HASP SRM (отличается другими драйверами и менеджером лицензий, существенно переписанной схемой взаимодействия)
Получить драйверы ключей и менеджер лицензий для Linux и WINE@Etersoft можно здесь, собранные для всех систем.
Содержание
Ситуация по поколениям ключей
HASP HL
Поддержка платформы Linux у ключей HASP имеется давно и в полном объёме. Раньше ситуацию немного омрачали LPT-ключи, которым требовалось компилировать модуль ядра, сейчас такие ключи становятся менее актуальны, да и сборка модуля ядра максимально упрощена в пакете haspd. Поддержка платформы Mac OS нас пока не интересует, а поддержка FreeBSD до сих пор так и не появилась, несмотря на многочисленные просьбы. Та же ситуация и с Solaris.
Но запуск программ в Wine имеет свою специфику, поскольку программа не может работать с Linux-драйверами ключей. Начиная с WINE@Etersoft 1.0.10 появилась поддержка "родных" Windows-драйверов для HASP 4/HL, что снимает проблему с локальными ключами, которые могут работать только через загруженный в Wine драйвер.
С поддержкой сетевых ключей HASP 4/HL проблем не было никаких, поскольку имеется драйвер ключа и менеджер лицензий, запускаемый в Linux, слушающий порт UDP/475, к которому можно обратиться из Wine или Windows. Странным является только то, что в Windows менеджер лицензий слушает порт TCP/475. Зачем сделано отличие, не ясно, но оно неплохо вносит сумятицу.
В настоящий момент локальные и сетевые ключи HASP HL USB поддерживаются полностью.
Драйвер ключа под Linux - aksusbd, менеджер лицензий - hasplm.
WINEHASP. В 2005 году Etersoft совместно с LinuxCenter обратились в Аладдин с предложением наладить работу локальных ключей HASP. Решение планировалось универсальным, но по какой-то причине применяется только компанией 1С в продуктах семейства 1С:Предприятие 8.x. Реализовано решение следующим образом: в Windows-API HASP HL начиная с версии API 1.12 добавлена проверка на запущенность в Wine и обращение при этом производится на localhost по порту UDP/2790 (который слушает процесс winehasp).
HASP SRM
И в Windows, и в Linux на TCP/1947 работает веб-интерфейс. По умолчанию доступ к нему разрешён только с машины, на которой он запущен. В Linux защищённая программа взаимодействует с демоном hasplmd, в Windows - со службой hasplms (HASP License Manager). Работа и с сетевым, и с локальным ключами происходит через локальный демон или службу по TCP/1947. Сетевой ключ, установленный на Linux-машине, позволяет работать с защищёнными программами на Windows-машине, и наоборот. Взаимодействие между различными машинами по сети происходит по TCP/1947 и по UDP с использованием порта 1947 и ещё одного порта, номер которого меняется при перезапуске демона.
В WINE защищённые программы не работают. По-видимому, это связано с тем, что Linux-программа и работающая в WINE Windows-программа сообщают различную информацию о машине, на которой они работают, то есть протоколы локального обмена разные для Windows / Linux.
Количество драйверов, необходимых для работы с ключом в Windows, увеличилось по сравнению с HASP HL, что не упрощает реализацию их поддержки в WINE@Etersoft. Для Linux поставляются aksusbd, winehasp под теми же именами, что и прежде, и они совместимы с программами, написанными для HASP HL. Менеджер лицензий называется теперь hasplmd, и совместимости с предыдущим не имеет.
Странно, что hasp_demo.exe из HASP-SRM-3-50/Windows/Installed/Samples/Runtime/C/win32/msc/dll/ не видит ключ, хотя в идущей рядом hasp_windows_demo.dll проверка на Wine и код обращения к winehasp имеется.
Ситуация по популярным программам
1С:Предприятие 7.7
Сетевые ключи работают без проблем. Поддержка локальных ключей находится в стадии тестирования.
1С:Предприятие 8.х
Для 1С:Предприятия 8.х работают как сетевые, так и локальные ключи.
В WINE@Etersoft 1.0.10 и выше по умолчанию локальные ключи работают через драйвера HASP, входящие в состав WINE@Etersoft.
!!! Обратите внимание !!! В некоторых системах возможны проблемы с правами на устройство ключа, тогда нужно в /proc/bus/usb/devices надо найти шину и номер устройства, соответствующие ключу, и поставить права для всех +rw на /dev/bus/usb/номер_шины/номер_устройства.
Также локальные ключи могут работать через Linux-сервис winehasp, входящий в состав hapsd. Использование winehasp включается правкой реестра. С помощью regedit нужно импортировать такой файл:
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Wine\Wine\Config]
"compat"="yes"
КОМПАС v.10
Используется HASP HL без поддержки Wine. Локальные ключи работают через "родные" Windows-драйвера, поддержка которых встроена, начиная с WINE@Etersoft 1.0.10. Для использования ключа по сети загрузка "родных" Windows-драйверов также должна быть включена, запускать haspd на машине, на которой запускается Компас, не обязательно.
КОМПАС v.11
Используется HASP SRM. На тестовых ключах возможность сетевой работы проверена, с КОМПАС ещё не проверялось.