Как узнать пользователя вошедшего в ДЕМО-режиме

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

Модераторы: m0p3e, edward_K, Модераторы

SergZol
Постоянный обитатель
Сообщения: 155
Зарегистрирован: 03 сен 2007, 19:06
Откуда: Россия,Казань

Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение SergZol »

Знаю что подобные темы поднимались, но нигде толком не описан процесс выявления такого пользователя.

Проблема в следующем:
у меня 500 активный пользователей
15 терминальных серверов

Кто-то заходит в систему, ему сообщается что ключ не найден(проблемы разные могут быть, не в этом суть). Этот пользователь настолько туп что жмет продолжить.
Естественно система его пускает в ДЕМОРЕЖИМ. ОН У НАС ТУПОЙ и выходить из демо режима не хочет. В результете остальные получают мессагу, что нельзя работать пока тупой не выйдет из системы.

Мне приходится всех отстреливать от системы, чтоб дальше можно было работать.

Теперь простой вопрос:
Система как-то определяет присутствие ДЕМОРЕЖИМА. Т.к. пользователь на ключе не зарегился, то информация о демо режиме где-то должна хранится в базе.
Очень прошу поделитесь инфой где или по каким признакам можно определить деморежим.
Polimer
Местный житель
Сообщения: 489
Зарегистрирован: 27 янв 2006, 12:46
Откуда: Москва

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение Polimer »

В последнем атлантисе вроде решены эти проблемы:

Код: Выделить всё

* ПРОБЛЕМА В ПИР: 102.102440
* ПЕРВОЕ РЕШЕНИЕ: NEW
* КРАТКОЕ ОПИСАНИЕ: Дать возможность запрета входа пользователей в демо-режим
* ПРОЕКТ: Консоль администратора
* ДЕТАЛИЗАЦИЯ: Общие проблемы по модулю

----- СУТЬ ПРЕДЛОЖЕНИЯ -----
Дать возможность запрета входа пользователей в демо-режим в случае
невозможности обратиться к серверу аппаратного ключа.

# КАК ИЗМЕНЕНО: Доработано. Сделана настройка "Работа в демо режиме" в Карточке
пользователя консоли администратора (по умолчанию "Разрешена")

# ИНСТРУКЦИЯ ПО НАСТРОЙКЕ: В интерфейсе "Карточка пользователя", вызываемом из 
Консоли администратора
комплекса Support, для пользователей, которым необходимо запретить работу в
демо-режиме, установить значение поля "Работа в демо-режиме" в значение 
"Запрещена".

№18
* ПРОБЛЕМА В ПИР: 102.106977
* ПЕРВОЕ РЕШЕНИЕ: NEW
* КРАТКОЕ ОПИСАНИЕ: Эпизодически теряется аппаратный ключ
* ПРОЕКТ: Безопасность системы
* ДЕТАЛИЗАЦИЯ: Серверы аппаратных ключей и их мониторы

----- ПРОЯВЛЕНИЕ ПРОБЛЕМЫ -----
В случае невозможности записать запрос в каталог обмена
с сервером аппаратного ключа атлантис-приложение получает
сообщение: "Не удалось обратиться к серверу аппаратного ключа.
Программа будет работать в режиме демо-версии" (1).
После этого остальные клиенты, обращающиеся к ключу,
получают сообщения: "Запрещено одновременное нахождение в БД
пользователей, работающих в штатном режиме и пользователей,
работающих в Demo-режиме".
Далее работа невозможна до момента выхода из системы клиента,
получившего сообщение (1).

# КАК ИЗМЕНЕНО: Исправлено.
В описанном случае пользователь получает возможность либо повторить
попытку обращения, либо отказаться от захвата/освобождения лицензии.
Переход в демо-режим не происходит.
SergZol
Постоянный обитатель
Сообщения: 155
Зарегистрирован: 03 сен 2007, 19:06
Откуда: Россия,Казань

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение SergZol »

Polimer писал(а):В последнем атлантисе вроде решены эти проблемы:
Это еще тестить нада, а как сейчас определить? Система же как-то определяет присутствие деморежима.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение m0p3e »

Система определяет по значению переменной DemoMode : boolean; А вот как получает значение переменная вопрос, на который можно ответить имея доступ в свежему атлантису.
При наличии демо-пользователя никакого подозрительного семафора не появляется?
SergZol
Постоянный обитатель
Сообщения: 155
Зарегистрирован: 03 сен 2007, 19:06
Откуда: Россия,Казань

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение SergZol »

m0p3e писал(а):Система определяет по значению переменной DemoMode : boolean; А вот как получает значение переменная вопрос, на который можно ответить имея доступ в свежему атлантису.
При наличии демо-пользователя никакого подозрительного семафора не появляется?
Семафора не заметил.

DemoMode нашел, это не переменная, а функция. Сидит в atlcore_.dll может у кого есть исходник глянуть?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение m0p3e »

SergZol писал(а):
m0p3e писал(а):DemoMode нашел, это не переменная, а функция. Сидит в atlcore_.dll может у кого есть исходник глянуть?
В кишках атлантиса (третьего):

Код: Выделить всё

  DemoMode: Boolean            = FALSE;
...............
  RegisterVariable('DemoMode', @RedFox.DemoMode, ftBoolean);
  RegisterFunction('Lic_DemoMode', @RedFox.Lic_DemoMode, ftBoolean, '');
В заголовках пятого:

Код: Выделить всё

function DemoMode      : Boolean;
SergZol
Постоянный обитатель
Сообщения: 155
Зарегистрирован: 03 сен 2007, 19:06
Откуда: Россия,Казань

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение SergZol »

m0p3e писал(а):
SergZol писал(а):
m0p3e писал(а):DemoMode нашел, это не переменная, а функция. Сидит в atlcore_.dll может у кого есть исходник глянуть?
В кишках атлантиса (третьего):
ага это я тоже нашел, а вот чего оно делает. Думал запросик какойто выполняется.

проверил, нет, как-же оно определяет?
Polimer
Местный житель
Сообщения: 489
Зарегистрирован: 27 янв 2006, 12:46
Откуда: Москва

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение Polimer »

SergZol писал(а): проверил, нет, как-же оно определяет?
Может быть так?

Код: Выделить всё

В случае невозможности записать запрос в каталог обмена
с сервером аппаратного ключа атлантис-приложение получает
сообщение: "Не удалось обратиться к серверу аппаратного ключа.
Программа будет работать в режиме демо-версии" (1).
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение m0p3e »

Должен быть какой-то признак. В случае ORACLE, PSQL никакой приблуды типа NAP нет. Значит информация где-то общедоступна. Семафор отпадает (а жаль - самый приятный вариант). Приходят на ум еще два:
1. Сервер аппаратного ключа.
2. Флажок в базе.
Первый можно проверить. У клиента изменить HardwareKey.SharedPath на левый и войти в базу. Почуствуют ли его остальные?
Со вторым сложнее...

Вообще очень интересное поле в x$activeusers: Reserved.
SergZol
Постоянный обитатель
Сообщения: 155
Зарегистрирован: 03 сен 2007, 19:06
Откуда: Россия,Казань

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение SergZol »

m0p3e писал(а):Должен быть какой-то признак. В случае ORACLE, PSQL никакой приблуды типа NAP нет. Значит информация где-то общедоступна. Семафор отпадает (а жаль - самый приятный вариант). Приходят на ум еще два:
1. Сервер аппаратного ключа.
2. Флажок в базе.
Первый можно проверить. У клиента изменить HardwareKey.SharedPath на левый и войти в базу. Почуствуют ли его остальные?
Со вторым сложнее...
Сервер аппаратного ключа отпадает. Чел зашел без обращения к ключу т.е. он до него и не дошел. А вот остальные пользователи прочуяли т.к. им выдает сообщение что кто-то вошел в демо режиме.

Флажек в базе - именно, но если я просто вызываю функцию DemoMode обращения к базе не происходит.
Polimer
Местный житель
Сообщения: 489
Зарегистрирован: 27 янв 2006, 12:46
Откуда: Москва

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение Polimer »

m0p3e писал(а):В случае ORACLE, PSQL никакой приблуды типа NAP нет.
А при чем здесь нап? Каталог обмена есть у всех.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение m0p3e »

Polimer писал(а):
m0p3e писал(а):В случае ORACLE, PSQL никакой приблуды типа NAP нет.
А при чем здесь нап? Каталог обмена есть у всех.
Например семафоры в MSSQL реализованы именно через NAP. В PSQL через X$Semafors. Как в ORACLE - не знаю, но в таблице пусто.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение m0p3e »

SergZol писал(а):
m0p3e писал(а): Флажек в базе - именно, но если я просто вызываю функцию DemoMode обращения к базе не происходит.
И не будет происходить, т.к. значение DemoMode (все-таки это внутренняя переменная, функция просто возвращает ее значение) определяется в момент входа в базу и не пересчитывается, насколько я понимаю. Сотрудники кто вошел в БД, до пользователя вошедшего как демо, ощущают его присутствие на себе?
С такой проблемой лично не сталкивался. Поэтому и спрашиваю. :)
SergZol
Постоянный обитатель
Сообщения: 155
Зарегистрирован: 03 сен 2007, 19:06
Откуда: Россия,Казань

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение SergZol »

m0p3e писал(а): Сотрудники кто вошел в БД, до пользователя вошедшего как демо, ощущают его присутствие на себе?
С такой проблемой лично не сталкивался. Поэтому и спрашиваю. :)

В момент перехода на другой модуль т.е. при попытке сменить занятую лицензию.

Человек вошел в систему запустиль модуль договора - естественно ему выдалась лицензия договоров, вошел демо, идет в договора ему говорят только ДЕМО и он соглашается.

пользователь ДЕМО работать не может т.к. число записей уже больше чем допускается в демо режиме, но и выходить из системы не спешит. Тот человек который зашел в договора продолжает работать ему уже выделена лицензия, но если он хочет перейти в другой модуль, например склад система освобождает лицензию договора и пытается захватить склад, но так-как в системе присутствует ДЕМО, то выдается сообщение о невозможности продолжать работу. Теперь пользователь уже не может ни вернутся в договора ни продолжать работу в модуле склад. Повторный вход в систему тоже ничего не даст пока ДЕМО не выйдет из системы.
SergZol
Постоянный обитатель
Сообщения: 155
Зарегистрирован: 03 сен 2007, 19:06
Откуда: Россия,Казань

Re: Как узнать пользователя вошедшего в ДЕМО-режиме

Сообщение SergZol »

промониторил все запросы при отсутствии ключа и при его наличии.

Обнаружил интересную табличку EVENTS.

при входе без ключа идет очень много пар запросов
"SELECT SYS#UL FROM GAL.""EVENTS"" WHERE ROWID=:P1 AND SYS#UL=:P2 FOR UPDATE NOWAIT"
"DELETE FROM GAL.""EVENTS"" WHERE ROWID=:P1"
P1 - у запросов совпадает, P2-0.

Этих запросов нет при входе с ключом.

еще одно различие заполнение этой таблицы
без ключа:
"INSERT INTO GAL.""EVENTS"" (""ATL_NREC"",""ATL_LASTDATE"",""ATL_LASTTIME"",""ATL_LASTUSER"",""ATL_ORIGINOFFICE"",""ATL_OWNER"",""TYPEEVENT"",""EVENT"") VALUES(:P1,:P2,:P3,:P4,:P5,:P6,:P7,:P8)"

с ключом:
"INSERT INTO GAL.""EVENTS"" (""ATL_NREC"",""TYPEEVENT"",""EVENT"") VALUES(:P1,:P2,:P3)"

Дальше буду еще ковырять.

PS
у ТП спросил - пока молчат.
Ответить