Как узнать пользователя вошедшего в ДЕМО-режиме
Модераторы: m0p3e, edward_K, Модераторы
-
- Постоянный обитатель
- Сообщения: 155
- Зарегистрирован: 03 сен 2007, 19:06
- Откуда: Россия,Казань
Как узнать пользователя вошедшего в ДЕМО-режиме
Знаю что подобные темы поднимались, но нигде толком не описан процесс выявления такого пользователя.
Проблема в следующем:
у меня 500 активный пользователей
15 терминальных серверов
Кто-то заходит в систему, ему сообщается что ключ не найден(проблемы разные могут быть, не в этом суть). Этот пользователь настолько туп что жмет продолжить.
Естественно система его пускает в ДЕМОРЕЖИМ. ОН У НАС ТУПОЙ и выходить из демо режима не хочет. В результете остальные получают мессагу, что нельзя работать пока тупой не выйдет из системы.
Мне приходится всех отстреливать от системы, чтоб дальше можно было работать.
Теперь простой вопрос:
Система как-то определяет присутствие ДЕМОРЕЖИМА. Т.к. пользователь на ключе не зарегился, то информация о демо режиме где-то должна хранится в базе.
Очень прошу поделитесь инфой где или по каким признакам можно определить деморежим.
Проблема в следующем:
у меня 500 активный пользователей
15 терминальных серверов
Кто-то заходит в систему, ему сообщается что ключ не найден(проблемы разные могут быть, не в этом суть). Этот пользователь настолько туп что жмет продолжить.
Естественно система его пускает в ДЕМОРЕЖИМ. ОН У НАС ТУПОЙ и выходить из демо режима не хочет. В результете остальные получают мессагу, что нельзя работать пока тупой не выйдет из системы.
Мне приходится всех отстреливать от системы, чтоб дальше можно было работать.
Теперь простой вопрос:
Система как-то определяет присутствие ДЕМОРЕЖИМА. Т.к. пользователь на ключе не зарегился, то информация о демо режиме где-то должна хранится в базе.
Очень прошу поделитесь инфой где или по каким признакам можно определить деморежим.
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
В последнем атлантисе вроде решены эти проблемы:
Код: Выделить всё
* ПРОБЛЕМА В ПИР: 102.102440
* ПЕРВОЕ РЕШЕНИЕ: NEW
* КРАТКОЕ ОПИСАНИЕ: Дать возможность запрета входа пользователей в демо-режим
* ПРОЕКТ: Консоль администратора
* ДЕТАЛИЗАЦИЯ: Общие проблемы по модулю
----- СУТЬ ПРЕДЛОЖЕНИЯ -----
Дать возможность запрета входа пользователей в демо-режим в случае
невозможности обратиться к серверу аппаратного ключа.
# КАК ИЗМЕНЕНО: Доработано. Сделана настройка "Работа в демо режиме" в Карточке
пользователя консоли администратора (по умолчанию "Разрешена")
# ИНСТРУКЦИЯ ПО НАСТРОЙКЕ: В интерфейсе "Карточка пользователя", вызываемом из
Консоли администратора
комплекса Support, для пользователей, которым необходимо запретить работу в
демо-режиме, установить значение поля "Работа в демо-режиме" в значение
"Запрещена".
№18
* ПРОБЛЕМА В ПИР: 102.106977
* ПЕРВОЕ РЕШЕНИЕ: NEW
* КРАТКОЕ ОПИСАНИЕ: Эпизодически теряется аппаратный ключ
* ПРОЕКТ: Безопасность системы
* ДЕТАЛИЗАЦИЯ: Серверы аппаратных ключей и их мониторы
----- ПРОЯВЛЕНИЕ ПРОБЛЕМЫ -----
В случае невозможности записать запрос в каталог обмена
с сервером аппаратного ключа атлантис-приложение получает
сообщение: "Не удалось обратиться к серверу аппаратного ключа.
Программа будет работать в режиме демо-версии" (1).
После этого остальные клиенты, обращающиеся к ключу,
получают сообщения: "Запрещено одновременное нахождение в БД
пользователей, работающих в штатном режиме и пользователей,
работающих в Demo-режиме".
Далее работа невозможна до момента выхода из системы клиента,
получившего сообщение (1).
# КАК ИЗМЕНЕНО: Исправлено.
В описанном случае пользователь получает возможность либо повторить
попытку обращения, либо отказаться от захвата/освобождения лицензии.
Переход в демо-режим не происходит.
-
- Постоянный обитатель
- Сообщения: 155
- Зарегистрирован: 03 сен 2007, 19:06
- Откуда: Россия,Казань
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
Это еще тестить нада, а как сейчас определить? Система же как-то определяет присутствие деморежима.Polimer писал(а):В последнем атлантисе вроде решены эти проблемы:
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
Система определяет по значению переменной DemoMode : boolean; А вот как получает значение переменная вопрос, на который можно ответить имея доступ в свежему атлантису.
При наличии демо-пользователя никакого подозрительного семафора не появляется?
При наличии демо-пользователя никакого подозрительного семафора не появляется?
-
- Постоянный обитатель
- Сообщения: 155
- Зарегистрирован: 03 сен 2007, 19:06
- Откуда: Россия,Казань
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
Семафора не заметил.m0p3e писал(а):Система определяет по значению переменной DemoMode : boolean; А вот как получает значение переменная вопрос, на который можно ответить имея доступ в свежему атлантису.
При наличии демо-пользователя никакого подозрительного семафора не появляется?
DemoMode нашел, это не переменная, а функция. Сидит в atlcore_.dll может у кого есть исходник глянуть?
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
В кишках атлантиса (третьего):SergZol писал(а):m0p3e писал(а):DemoMode нашел, это не переменная, а функция. Сидит в atlcore_.dll может у кого есть исходник глянуть?
Код: Выделить всё
DemoMode: Boolean = FALSE;
...............
RegisterVariable('DemoMode', @RedFox.DemoMode, ftBoolean);
RegisterFunction('Lic_DemoMode', @RedFox.Lic_DemoMode, ftBoolean, '');
Код: Выделить всё
function DemoMode : Boolean;
-
- Постоянный обитатель
- Сообщения: 155
- Зарегистрирован: 03 сен 2007, 19:06
- Откуда: Россия,Казань
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
ага это я тоже нашел, а вот чего оно делает. Думал запросик какойто выполняется.m0p3e писал(а):В кишках атлантиса (третьего):SergZol писал(а):m0p3e писал(а):DemoMode нашел, это не переменная, а функция. Сидит в atlcore_.dll может у кого есть исходник глянуть?
проверил, нет, как-же оно определяет?
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
Может быть так?SergZol писал(а): проверил, нет, как-же оно определяет?
Код: Выделить всё
В случае невозможности записать запрос в каталог обмена
с сервером аппаратного ключа атлантис-приложение получает
сообщение: "Не удалось обратиться к серверу аппаратного ключа.
Программа будет работать в режиме демо-версии" (1).
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
Должен быть какой-то признак. В случае ORACLE, PSQL никакой приблуды типа NAP нет. Значит информация где-то общедоступна. Семафор отпадает (а жаль - самый приятный вариант). Приходят на ум еще два:
1. Сервер аппаратного ключа.
2. Флажок в базе.
Первый можно проверить. У клиента изменить HardwareKey.SharedPath на левый и войти в базу. Почуствуют ли его остальные?
Со вторым сложнее...
Вообще очень интересное поле в x$activeusers: Reserved.
1. Сервер аппаратного ключа.
2. Флажок в базе.
Первый можно проверить. У клиента изменить HardwareKey.SharedPath на левый и войти в базу. Почуствуют ли его остальные?
Со вторым сложнее...
Вообще очень интересное поле в x$activeusers: Reserved.
-
- Постоянный обитатель
- Сообщения: 155
- Зарегистрирован: 03 сен 2007, 19:06
- Откуда: Россия,Казань
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
Сервер аппаратного ключа отпадает. Чел зашел без обращения к ключу т.е. он до него и не дошел. А вот остальные пользователи прочуяли т.к. им выдает сообщение что кто-то вошел в демо режиме.m0p3e писал(а):Должен быть какой-то признак. В случае ORACLE, PSQL никакой приблуды типа NAP нет. Значит информация где-то общедоступна. Семафор отпадает (а жаль - самый приятный вариант). Приходят на ум еще два:
1. Сервер аппаратного ключа.
2. Флажок в базе.
Первый можно проверить. У клиента изменить HardwareKey.SharedPath на левый и войти в базу. Почуствуют ли его остальные?
Со вторым сложнее...
Флажек в базе - именно, но если я просто вызываю функцию DemoMode обращения к базе не происходит.
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
А при чем здесь нап? Каталог обмена есть у всех.m0p3e писал(а):В случае ORACLE, PSQL никакой приблуды типа NAP нет.
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
Например семафоры в MSSQL реализованы именно через NAP. В PSQL через X$Semafors. Как в ORACLE - не знаю, но в таблице пусто.Polimer писал(а):А при чем здесь нап? Каталог обмена есть у всех.m0p3e писал(а):В случае ORACLE, PSQL никакой приблуды типа NAP нет.
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
И не будет происходить, т.к. значение DemoMode (все-таки это внутренняя переменная, функция просто возвращает ее значение) определяется в момент входа в базу и не пересчитывается, насколько я понимаю. Сотрудники кто вошел в БД, до пользователя вошедшего как демо, ощущают его присутствие на себе?SergZol писал(а):m0p3e писал(а): Флажек в базе - именно, но если я просто вызываю функцию DemoMode обращения к базе не происходит.
С такой проблемой лично не сталкивался. Поэтому и спрашиваю.
-
- Постоянный обитатель
- Сообщения: 155
- Зарегистрирован: 03 сен 2007, 19:06
- Откуда: Россия,Казань
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
m0p3e писал(а): Сотрудники кто вошел в БД, до пользователя вошедшего как демо, ощущают его присутствие на себе?
С такой проблемой лично не сталкивался. Поэтому и спрашиваю.
В момент перехода на другой модуль т.е. при попытке сменить занятую лицензию.
Человек вошел в систему запустиль модуль договора - естественно ему выдалась лицензия договоров, вошел демо, идет в договора ему говорят только ДЕМО и он соглашается.
пользователь ДЕМО работать не может т.к. число записей уже больше чем допускается в демо режиме, но и выходить из системы не спешит. Тот человек который зашел в договора продолжает работать ему уже выделена лицензия, но если он хочет перейти в другой модуль, например склад система освобождает лицензию договора и пытается захватить склад, но так-как в системе присутствует ДЕМО, то выдается сообщение о невозможности продолжать работу. Теперь пользователь уже не может ни вернутся в договора ни продолжать работу в модуле склад. Повторный вход в систему тоже ничего не даст пока ДЕМО не выйдет из системы.
-
- Постоянный обитатель
- Сообщения: 155
- Зарегистрирован: 03 сен 2007, 19:06
- Откуда: Россия,Казань
Re: Как узнать пользователя вошедшего в ДЕМО-режиме
промониторил все запросы при отсутствии ключа и при его наличии.
Обнаружил интересную табличку 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
у ТП спросил - пока молчат.
Обнаружил интересную табличку 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
у ТП спросил - пока молчат.