Bug 9425

Summary: Демон haspd не видит вставленный ключ hasp
Product: [Сторонние программы (Other programs)] HASP Reporter: Maks <admaks>
Component: драйвераAssignee: Anton Agapov <anton>
Status: CLOSED WONTFIX QA Contact: Vitaly Lipatov <lav>
Severity: major    
Priority: P4 CC: akv, anton, lav
Version: не указана   
Target Milestone: ---   
Hardware: PC   
OS: ALT Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:

Description Maks 2013-07-15 18:40:58 MSK
при старте ноута, запускается haspd

для запуска 1С - требуется наличие ключа

вставляем ключ в usb
запускаем 1С 
-нам раlостно сообщают что ключ не обнаружен.

делаем рестарт haspd с установленным ключем
запускаем 1С 
-1С работает, ключ найден


Система:
Altlinux Simply 7 (branch p7: x86_64 + x86_64-i586 + noarch)

#rpm -qa|grep haspd
haspd-3.3-alt4.M70P.5
haspd-modules-3.3-alt4.M70P.5

$ uname -a
Linux bird.localdomain 3.8.13.4-std-def-alt1.M70P.1 #1 SMP Thu Jul 4 10:02:08 UTC 2013 x86_64 GNU/Linux

также: имеет ли отношение тот момент, что hapsd-3.3 отсутствует для x86_64
Comment 1 Vitaly Lipatov 2013-11-28 20:09:23 MSK
Нужен вывод
# eterkeytest --hasp

Также вашего сообщения не ясно, какая версия 1С, какой ключ (локальный/сетевой).
Comment 2 Vitaly Lipatov 2014-01-19 18:52:51 MSK
Антон, подтверждаешь: hasp не видит вставленный ключ до перезапуска.
Там у нас используется имитация /proc/bus/usb, может быть она оказывается статической?
Comment 3 Anton Agapov 2014-01-21 14:33:05 MSK
(В ответ на comment #2)
> Антон, подтверждаешь: hasp не видит вставленный ключ до перезапуска.
> Там у нас используется имитация /proc/bus/usb, может быть она оказывается
> статической?

Если ключ вынимался/вставлялся, то да, успешных случаев, что он тут же подхватывался - не было. Перезапускали haspd - все становилось в порядке.
Comment 4 Maks 2014-01-25 22:41:06 MSK
(В ответ на comment #3)
> (В ответ на comment #2)
> > Антон, подтверждаешь: hasp не видит вставленный ключ до перезапуска.
> > Там у нас используется имитация /proc/bus/usb, может быть она оказывается
> > статической?
> 
> Если ключ вынимался/вставлялся, то да, успешных случаев, что он тут же
> подхватывался - не было. Перезапускали haspd - все становилось в порядке.

а может как-то принудительно рестарт делать haspd ? после втыкания. и обнаружения на шине ключа
Comment 6 Vitaly Lipatov 2014-01-27 20:16:38 MSK
(В ответ на comment #5)
> Курю udev rules...
Лучше бы выяснили, когда перестало работать, и от чего это зависит.
А строить костыли вокруг, пока неизвестно, от чего перестало работать...
Comment 7 Anton Agapov 2014-01-28 15:21:48 MSK
(В ответ на comment #6)
> Лучше бы выяснили, когда перестало работать, и от чего это зависит.
> А строить костыли вокруг, пока неизвестно, от чего перестало работать...

Вообще-то поддержка hotplug в haspd нигде не указана. Неужели когда-то работало ???
Comment 8 Vitaly Lipatov 2015-08-07 12:38:11 MSK
(Ответ Anton Agapov на комментарий7)
> (В ответ на comment #6)
> > Лучше бы выяснили, когда перестало работать, и от чего это зависит.
> > А строить костыли вокруг, пока неизвестно, от чего перестало работать...
> 
> Вообще-то поддержка hotplug в haspd нигде не указана. Неужели когда-то
> работало ???

Думаю, что никогда не работало. И чинить пока что не будем.
Хотя идея вписать в правила для udev перезапуск сервиса не так плоха.
Если это действительно необходимо.
Comment 9 Vitaly Lipatov 2015-08-18 13:47:34 MSK
Обнаружил
* Пт ноя 29 2013 Andrey Cherepanov <cas@altlinux.org> 3.3-alt7
- Add udev rules to use 1C hasp key if plugged without haspd restart
  (see eterbug #9425)
Comment 10 Maks 2015-08-19 10:16:46 MSK
(Ответ Vitaly Lipatov на комментарий9)
> Обнаружил
> * Пт ноя 29 2013 Andrey Cherepanov <cas@altlinux.org> 3.3-alt7
> - Add udev rules to use 1C hasp key if plugged without haspd restart
>   (see eterbug #9425)

будет собран в репозитарии АЛЬТ? p7 в частности?
Comment 11 Vitaly Lipatov 2015-08-23 23:20:09 MSK
(Ответ Maks на комментарий10)
> (Ответ Vitaly Lipatov на комментарий9)
> > Обнаружил
> > * Пт ноя 29 2013 Andrey Cherepanov <cas@altlinux.org> 3.3-alt7
> > - Add udev rules to use 1C hasp key if plugged without haspd restart
> >   (see eterbug #9425)
> 
> будет собран в репозитарии АЛЬТ? p7 в частности?
Собран в Sisyphus и p7.

2015-Aug-23 20:17:08 :: updated /gears/h/haspd.git branch `p7'
2015-Aug-23 20:17:24 :: gears update OK
2015-Aug-23 20:17:24 :: task #147967 for p7 DONE
Comment 12 Anton Agapov 2015-08-24 17:06:24 MSK
Обновил пакет на сервере (Кандидат: 3.3-alt9.M70P.10). Проверили заход в 1С...
...
Увы, сервис haspd таки пришлось перезапустить. После чего - ОК.

Так как на рабочей системе нежелательно "200 тестов перетыкания проводить", то больше пока ничего не скажу.
Comment 13 Vitaly Lipatov 2015-08-25 23:54:51 MSK
(Ответ Anton Agapov на комментарий12)
> Обновил пакет на сервере (Кандидат: 3.3-alt9.M70P.10). Проверили заход в
> 1С...
> ...
> Увы, сервис haspd таки пришлось перезапустить. После чего - ОК.
> 
> Так как на рабочей системе нежелательно "200 тестов перетыкания проводить",
> то больше пока ничего не скажу.
1. В твоей проверке ничего нет о перетыкании ключа
2. Не заметно перезапуска сервиса после обновления пакета
3. Поскольку суть в правилах udev, видимо, их нужно было как-то сказать перечитать?
4. Проверять можно через элементарный eterkeytest:

[lav@server ~]$ cd /tmp
[lav@server tmp]$ setnethasp localhost
nethasp.ini is created succesfully.
[lav@server tmp]$ eterkeytest --hasp

eterkeytest for WINE@Etersoft 2.1.3-eter8
USB:
Vendor:Product: 0665:5161 [denied], [denied]
Vendor:Product: 0529:0001 Aladdin HASP (supported):  AKS, HASP 2.17
Vendor:Product: 0529:0001 Aladdin HASP (supported):  AKS, HASP 2.17

Warning: Keys marked with 'denied' will not be accessed from wine sys drivers
HASP:
Local HASP keys drivers in 1C 8.x used in direct mode via libusb from wine, haspd service does not required.
HASP API VERSION: 8.0

HASP Local:
	USB HASP4 M4 (HASP4 is connected, key is HASP4 Net 5 licenses)
	[ 6] 1C:Accountancy v8.0

	USB HASP4 M1 (HASP4 is connected, key is local HASP4)
	[ 7] 1C:Enterprise v8.0 (Applications server)


HASP Net at host (see nethasp.ini) (press Ctrl-C to break):
..............	ERROR: Login failed (can't detect any key)


Правда сетевые ключи по сети она обнаружить не смогла.
Предлагаю проверить новую версию:
/var/ftp/pub/Etersoft/HASP/unstable/ALTLinux/p7/haspd-7.32-alt0.M70P.1.i586.rpm
Comment 14 Anton Agapov 2015-08-26 16:30:07 MSK
(Ответ Vitaly Lipatov на комментарий13)
> (Ответ Anton Agapov на комментарий12)
> > Обновил пакет на сервере (Кандидат: 3.3-alt9.M70P.10). Проверили заход в
> > 1С...
> > ...
> > Увы, сервис haspd таки пришлось перезапустить. После чего - ОК.
> > 
> > Так как на рабочей системе нежелательно "200 тестов перетыкания проводить",
> > то больше пока ничего не скажу.
> 1. В твоей проверке ничего нет о перетыкании ключа
> 2. Не заметно перезапуска сервиса после обновления пакета
> 3. Поскольку суть в правилах udev, видимо, их нужно было как-то сказать
> перечитать?
> 4. Проверять можно через элементарный eterkeytest:

1. Переткнул (тогда) оба ключа с 5-тисекундным интервалом. Разумеется, после установки пакета и перезапуска службы.
2. Разумеется службу haspd перезапустил вручную. Хотя, судя по выводу, это было сделано при обновлении пакета самим rpm.
3. Я был уверен, что правила перечитываются каждый раз при возникновении события для udevd. (Со времен настройки мегафон-модемов...)
4. А это проверит то, что менеджер лицензий 1С тоже все увидит и будет предоставлять ключ кому положено ? Впрочем, тест полезный в любом случае.

По поводу п.3 "гуглеж" выдал:

Udev uses the inotify mechanism to watch for changes in the rules directory, in both the library and in the local configuration trees (typically located at /lib/udev/rules.d and /etc/udev/rules.d). So you don't need to do anything when you change a rules file.

и, тоже полезно:

udevadm control --reload-rules
Comment 15 Vitaly Lipatov 2015-08-26 17:07:28 MSK
(Ответ Anton Agapov на комментарий14)
...
> 4. А это проверит то, что менеджер лицензий 1С тоже все увидит и будет
> предоставлять ключ кому положено ? Впрочем, тест полезный в любом случае.
Да, тест ведёт себя точно так же, как 1С 7.7
 
> По поводу п.3 "гуглеж" выдал:
> 
> Udev uses the inotify mechanism to watch for changes in the rules directory,
...
> udevadm control --reload-rules
А, ну отлично.
Comment 16 Maks 2015-08-27 17:40:13 MSK
система П7 (x64)

установили обновленный хаспд. который i586-hapsd 
$ rpm -qa| grep hasp
haspd-modules-3.3-alt4.M70P.5
i586-haspd-3.3-alt9.M70P.10


перезагрузил систему,
демон хасп - стартанул, правила для удев тоже вроде.

втыкаем ключ - облом

ЧЯДНТ?
Comment 17 Vitaly Lipatov 2015-09-03 16:34:21 MSK
Давайте проверим на пакете haspd 7.32
http://download.etersoft.ru/pub/Etersoft/HASP/unstable/ALTLinux/p7/
Comment 18 Anton Agapov 2015-09-03 19:35:09 MSK
(Ответ Vitaly Lipatov на комментарий17)
> Давайте проверим на пакете haspd 7.32
> http://download.etersoft.ru/pub/Etersoft/HASP/unstable/ALTLinux/p7/

Установил haspd и haspd-modules из указанной директории, проверил: все равно требуется перезапуск службы после перетыкания ключей.
Comment 19 Maks 2015-09-07 15:27:19 MSK
(Ответ Anton Agapov на комментарий18)
> (Ответ Vitaly Lipatov на комментарий17)
> > Давайте проверим на пакете haspd 7.32
> > http://download.etersoft.ru/pub/Etersoft/HASP/unstable/ALTLinux/p7/
> 
> Установил haspd и haspd-modules из указанной директории, проверил: все равно
> требуется перезапуск службы после перетыкания ключей.

ага, так и есть у меня тоже
Comment 20 Vitaly Lipatov 2015-09-07 15:42:04 MSK
Нужно посмотреть на правила udev, что не так.
Comment 21 Anton Agapov 2015-09-07 18:13:30 MSK
(Ответ Vitaly Lipatov на комментарий20)
> Нужно посмотреть на правила udev, что не так.

"Пощупал" правила из /lib/udev/rules.d/80-hasp.rules - они применяются. Помогает команда:

# udevadm test $(udevadm info -q path -n [device name]) 2>&1

[device name] = /dev/bus/usb/003/006 например (на рабочей системе).

Я попробовал вручную выполнять команды добавления и удаления (-c и -r)... Никакой реакции на них не заметил. (Тестировал eterkeytest'ом: по сети всегда нет доступа... Локально всегда видит оба ключа.) Замечу, что в выводе aksusbd -h нет информации о -c и -r. Может, поэтому и реакции на перетыкание нет, что опции уже не поддерживаются в полном объеме (принимаются, но не выполняются)...

Нашел: https://bugs.etersoft.ru/show_bug.cgi?id=513 , где последний комментарий рождает еще больше вопросов.

Вот, что в логах /var/log/messages на команды:

[root@server ~]# /usr/sbin/aksusbd -l3 -r /dev/bus/usb/003/006 
[root@server ~]# /usr/sbin/aksusbd -l3 -c /dev/bus/usb/003/006


Sep  7 17:56:18 server aksusbd[1939]: aksusbd_req_dev_connect: write() failed: -1, Bad file descriptor 
Sep  7 17:56:25 server aksusbd: aksusbd_usb_dev_remove: device '/dev/bus/usb/003/006' 
...
Sep  7 17:56:25 server aksusbd[1939]: aksusbd_req_dev_connect: write() failed: -1, Bad file descriptor 

Пробовал найти что-нибудь в:

nohup strace -yf /usr/sbin/aksusbd -l3 -r /dev/aks/hasp/3-3

Но там только упоминается /dev/Hardlock... Причем:

open("/dev/Hardlock", O_RDWR)           = -1 ENXIO (No such device or address)

Хотя этот c-файл еще как есть !

Непонятки... Можно переписать udev-правило, чтобы оно просто перезапускало службу... В свете скупой информации о aksusbd (на официальном сайте в том числе), - это будет работающий костыль.
Comment 22 Anton Agapov 2016-04-21 17:11:08 MSK
(Ответ Anton Agapov на комментарий21)
> Можно переписать udev-правило, чтобы оно просто перезапускало
> службу... В свете скупой информации о aksusbd (на официальном сайте в том
> числе), - это будет работающий костыль.

Это предложение осталось без внимания - умываю руки: менеджер лицензий от 1С - это разработка 1С.
Comment 23 Vitaly Lipatov 2016-12-08 22:30:41 MSK
Принято.