<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Guardant &mdash; Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
		<link>https://forum.guardant.ru/topic/608/</link>
		<atom:link href="https://forum.guardant.ru/feed/rss/topic/608/" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Узнать из программы количество занятых лицензий на сетевом ключе».]]></description>
		<lastBuildDate>Fri, 19 Feb 2016 10:50:07 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
			<link>https://forum.guardant.ru/post/3001/#p3001</link>
			<description><![CDATA[<p>Решение найдено. Необходимо выделять буфер длинной <strong>не менее 32 байт</strong>. Тогда все работает. Наверное есть смысл документацию скорректировать, чтобы избежать таких вопросов в дальнейшем.<br />Спасибо.</p><p>P.S. Правда адрес выдается IPv6, а хотелось бы IPv4.</p>]]></description>
			<author><![CDATA[null@example.com (Mikle)]]></author>
			<pubDate>Fri, 19 Feb 2016 10:50:07 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3001/#p3001</guid>
		</item>
		<item>
			<title><![CDATA[Re: Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
			<link>https://forum.guardant.ru/post/2999/#p2999</link>
			<description><![CDATA[<p>Что-то не получается у меня получить IP адрес сервера на котором сетевой ключ установлен. Пытаюсь так (Delphi):</p><div class="codebox"><pre><code>var
  lData: array of byte;
.............
  SetLength(lData, 15);
  FillChar(lData[0], Length(lData), 0);
  fErrCode := GrdGetInfo(fGrdHandle, GrdGIR_RemoteIP, @lData[0], Length(lData));</code></pre></div><p>В fErrCode возвращается код ошибки 46 (Недопустимые параметры при вызове функции). Попробовал различные варианты вызова <strong>GrdGetInfo</strong>:<br /><em>GrdGIL_ID</em>, <em>GrdGIL_Remote</em>, <em>GrdGIR_VerSrv</em>, <em>GrdGIR_IniTimeOutSend</em> - работают без ошибок.<br /><em>GrdGIR_LocalIP</em>, <em>GrdGIR_RemoteIP</em> - выдают ошибку 46.<br />Ключ находится на той-же машине, что и клиент, но подключаюсь как к удаленному ключу (<em>GrdFMR_Remote</em> вторым параметром <strong>GrdSetFindMode</strong> + GrdGetInfo(..., GrdGIL_Remote, ...) выдает что подключение сетевое).<br />Не подскажете в чем может быть проблема?</p>]]></description>
			<author><![CDATA[null@example.com (Mikle)]]></author>
			<pubDate>Fri, 19 Feb 2016 08:09:44 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/2999/#p2999</guid>
		</item>
		<item>
			<title><![CDATA[Re: Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
			<link>https://forum.guardant.ru/post/2998/#p2998</link>
			<description><![CDATA[<div class="quotebox"><cite>Mikle пишет:</cite><blockquote><p>Правильно ли я понимаю, что память в буфере для возврата результата необходимо предварительно выделить (перед запуском GrdGetInfo)?</p></blockquote></div><p>Да, все верно.</p>]]></description>
			<author><![CDATA[null@example.com (Антон Тихиенко)]]></author>
			<pubDate>Fri, 19 Feb 2016 06:37:48 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/2998/#p2998</guid>
		</item>
		<item>
			<title><![CDATA[Re: Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
			<link>https://forum.guardant.ru/post/2997/#p2997</link>
			<description><![CDATA[<div class="quotebox"><cite>Антон Тихиенко пишет:</cite><blockquote><p>В <em>pInfoData</em> возвращается буфер, размер которого, для <em>GrdGIR_RemoteIP</em>, должен быть не менее 15 байт.</p></blockquote></div><p>Антон, спасибо. Я в справке переключился на закладку С# (уже не помню зачем), а там информации о длине буфера нет, поэтому и возник вопрос.<br />Правильно ли я понимаю, что память в буфере для возврата результата необходимо предварительно выделить (перед запуском GrdGetInfo)?</p>]]></description>
			<author><![CDATA[null@example.com (Mikle)]]></author>
			<pubDate>Thu, 18 Feb 2016 13:14:21 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/2997/#p2997</guid>
		</item>
		<item>
			<title><![CDATA[Re: Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
			<link>https://forum.guardant.ru/post/2996/#p2996</link>
			<description><![CDATA[<div class="quotebox"><cite>Mikle пишет:</cite><blockquote><p>Тут возникла необходимость получения адреса компьютера с сетевым ключом. Как я понимаю, для этого мы можем воспользоваться функцией GrdGetInfo с параметром GrdGIR_RemoteIP. Возникает вопрос: какого типа и длинны должен быть параметр infoData в этом случае? В идеале хотелось бы получить IP адрес в виде строки.</p></blockquote></div><p>В <em>pInfoData</em> возвращается буфер, размер которого, для <em>GrdGIR_RemoteIP</em>, должен быть не менее 15 байт.<br /><span class="postimg"><a class="fancybox fancybox.image" rel="group" href="https://forum.guardant.ru/uploads/legacy/0/2500/2996/p1abq60d14bj23jm1ald793gm71.jpg"><img class="fb_img" src="https://forum.guardant.ru/uploads/legacy/0/2500/2996/thumb/p1abq60d14bj23jm1ald793gm71.jpg" alt="" /></a></span></p>]]></description>
			<author><![CDATA[null@example.com (Антон Тихиенко)]]></author>
			<pubDate>Thu, 18 Feb 2016 12:35:12 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/2996/#p2996</guid>
		</item>
		<item>
			<title><![CDATA[Re: Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
			<link>https://forum.guardant.ru/post/2995/#p2995</link>
			<description><![CDATA[<p>Пока приняли решения не использовать таблицу лицензий. Тому есть несколько причин:<br />- сейчас пользователь докупая рабочие места получает от нас новый файл лицензий по почте, при прописывании информации в ключе необходимо будет удаленное обновление ключа, что увеличит время перехода на новые ключи<br />- логика использования лицензий у нас чуть сложнее и использует 2 цифры версии на 4 типа программы. Т.е. мы можем выписать лицензии:<br />1. версии 8.0 на 5 рабочих мест&nbsp; (позволяет запустить 5 рабочих мест версии 8.0)<br />2. версии 8.1 на 3 рабочих места (позволяет запустить 3 рабочих места версии 8.0 или 8.1)<br />3. версии 9.0 на 2 рабочих места. (позволяет запустить 2 рабочих места версии 9.0)<br />и это только в пределах одной программы, при добавлении типов программ логика усложняется. Возможно можно как-то решить этот вопрос с использованием таблицы лицензий, но это опять же время.</p><p>Тут возникла необходимость получения адреса компьютера с сетевым ключом. Как я понимаю, для этого мы можем воспользоваться функцией GrdGetInfo с параметром GrdGIR_RemoteIP. Возникает вопрос: какого типа и длинны должен быть параметр infoData в этом случае? В идеале хотелось бы получить IP адрес в виде строки.<br />При поиске по форуму нашел только <a href="https://forum.guardant.ru/topic/590/">такую тему</a> (там кстати тоже просят возможность средствами API узнать количество занятых лицензий).</p>]]></description>
			<author><![CDATA[null@example.com (Mikle)]]></author>
			<pubDate>Thu, 18 Feb 2016 09:46:46 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/2995/#p2995</guid>
		</item>
		<item>
			<title><![CDATA[Re: Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
			<link>https://forum.guardant.ru/post/2992/#p2992</link>
			<description><![CDATA[<p>Здравствуйте.<br /></p><div class="quotebox"><cite>Mikle пишет:</cite><blockquote><p>Прошу прощения, написал много, сумбурно, но в целом мысль такая: если такая функция появится в обозримом будущем, было бы неплохо, если же в планах этого нет - мы справимся и без этого, просто это будет дольше :-)</p></blockquote></div><p>Судя по представленному описанию задачи, для ее решения, не видится препятствий при использовании возможностей <a href="http://developer.guardant.ru/pages/viewpage.action?pageId=1277977">таблицы лицензий (LMS)</a>, а именно модулей LMS.</p><p>Нужно в таблице лицензий целевого сетевого ключа создать необходимое количество модулей с различными сетевыми ресурсами для каждой версии защищенного приложения. Например, при необходимости разделить реальный сетевой ресурс электронного ключа (=10 лицензиям) на три версии защищенного приложения (<strong>v.1</strong>=5 лиц., <strong>v.2</strong>=2 лиц. и <strong>v.3</strong>=3 лиц.) нужно будет сформировать таблицу лицензий с общим ресурсом в 10 лиц. и тремя модулями (на 5, 2 и 3 лиц., соответственно). Каждому модулю назначается номер, который и потребуется указать при вызове функции <a href="http://developer.guardant.ru/display/DOC/GrdLogin"><em>GrdLogin</em></a> , в качестве параметра <em>dwModuleLMS</em>. Таким образом приложение v.1 не сможет занять более 5 лиц., несмотря на реальный сетевой ресурс в 10 лиц., который также будут использовать еще и приложения v.2 и v.3.</p>]]></description>
			<author><![CDATA[null@example.com (Антон Тихиенко)]]></author>
			<pubDate>Wed, 17 Feb 2016 06:59:30 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/2992/#p2992</guid>
		</item>
		<item>
			<title><![CDATA[Re: Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
			<link>https://forum.guardant.ru/post/2990/#p2990</link>
			<description><![CDATA[<p>У нас уже реализована собственная система лицензирования, которая ориентируется на максимально доступное число подключений к ключу + текущее количество подключений. Необходимость написания собственной системы была обусловлена сложностью лицензионной политики компании (разделение по проектам и версиям с возможностью на одном сетевом ключе запускать определенное разработчиком количество копий разных программ разных версий). На момент написания этой системы используемый нами ключ Aladdin (позже Sentinel) не позволял в полной мере обслужить наши потребности в лицензировании, поэтому пришлось писать самим пользуясь возможностями предоставляемыми API ключа. </p><p>Сейчас же при переходе на ключи Guardant хотелось бы обойтись минимальными изменениями, чтобы быстрее осуществить переход, поэтому менять нашу систему лицензирования мы не будем, по крайней мере на начальном этапе. </p><p>Первое с чем я столкнулся: в текущей реализации в памяти ключа прописывается реальный сетевой ресурс ключа (просто число в памяти), что дает возможность ограничить, например, сетевой ключ на 10 мест 7-ю лицензиями. При подключении к такому ключу математика считывает реальный ресурс ключа и получает через функцию API количество подключений (включая текущее). Если подключений больше - отключаемся с соответствующим сообщением (номер ключа/реальное кол-во лицензий). Это только &quot;вершина айсберга&quot; проверок дальше идут проверки по версиям и проектам. </p><p>В принципе обойтись без этой первой проверки можно. Достаточно при программировании ключа в таблицу лицензий ключа Guardant записать реальный сетевой ресурс ключа и подключения даже не произойдет (выдаваемое при этом сообщение я еще не видел, но уверен, что оно достаточно информативно для конечного пользователя). Сложность здесь заключается в прописывании этого самого реального сетевого ресурса - просто в определенное место дампа памяти ключа записать это число недостаточно, там еще нужно CRC посчитать и записать, как выяснилось. А сделать это нужно программно (у нас отдельная программа по программированию ключей совмещенная с нашей CRM системой). И еще надо научить утилиту дистанционного обновления ключа это делать. Т.е. ничего нерешаемого, просто дополнительная работа с тем чтобы в этом разобраться (изначально была идея сохранить дамп образа для ключей на 5, 10, 25, 50, 100, 250 мест и записывать дамп целиком в память, а &quot;тонкое&quot; ограничение оставить нашей математике, но без функции определения количества уже подключенных клиентов наша математика не сработает).</p><p>Прошу прощения, написал много, сумбурно, но в целом мысль такая: если такая функция появится в обозримом будущем, было бы неплохо, если же в планах этого нет - мы справимся и без этого, просто это будет дольше :-)</p>]]></description>
			<author><![CDATA[null@example.com (Mikle)]]></author>
			<pubDate>Tue, 16 Feb 2016 12:32:42 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/2990/#p2990</guid>
		</item>
		<item>
			<title><![CDATA[Re: Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
			<link>https://forum.guardant.ru/post/2989/#p2989</link>
			<description><![CDATA[<p>Мы Ваше пожелания передадим разработчикам.<br />Однако, из Вашего описания не совсем понятно в чём заключается Ваша концепция.<br />При отсутствие свободных лицензий в ключе на клиентском компьютере высвечивается соответствующее сообщение при попытке занять лицензию (при запуске приложения). Вас не устраивает такого рода оповещение?</p>]]></description>
			<author><![CDATA[null@example.com (Станислав Петрушевский)]]></author>
			<pubDate>Tue, 16 Feb 2016 12:05:08 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/2989/#p2989</guid>
		</item>
		<item>
			<title><![CDATA[Re: Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
			<link>https://forum.guardant.ru/post/2988/#p2988</link>
			<description><![CDATA[<p>Жаль. Сейчас мы используем для защиты приложения ключи другого производителя и там подобная функция в API есть и используется в наших алгоритмах. При переходе на ключи Guardant придется решать чем эту логику заменить. <br />Скорее всего нужно будет реализовать при программировании ключа (мы делаем это отдельно написанной своей программой) прописывание реального сетевого ресурса ключа (с расчетом CRC) как описано в <a href="https://forum.guardant.ru/topic/336/">этой теме</a>. <br />Не очень понятно как в такой схеме информировать пользователя о том, что все лицензии в ключе уже заняты с указанием реального сетевого ресурса ключа, ведь к ключу на котором заняты все лицензии даже подключиться не получится чтобы считать это число. Остается только отправить пользователя в монитор сервера сетевых ключей.</p>]]></description>
			<author><![CDATA[null@example.com (Mikle)]]></author>
			<pubDate>Tue, 16 Feb 2016 09:19:54 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/2988/#p2988</guid>
		</item>
		<item>
			<title><![CDATA[Re: Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
			<link>https://forum.guardant.ru/post/2987/#p2987</link>
			<description><![CDATA[<p>Здравствуйте!<br />На текущий момент ничего не изменилось. Пока что добавления такого функционала не ожидается.</p>]]></description>
			<author><![CDATA[null@example.com (Станислав Петрушевский)]]></author>
			<pubDate>Tue, 16 Feb 2016 09:08:22 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/2987/#p2987</guid>
		</item>
		<item>
			<title><![CDATA[Узнать из программы количество занятых лицензий на сетевом ключе]]></title>
			<link>https://forum.guardant.ru/post/2986/#p2986</link>
			<description><![CDATA[<p>Здравствуйте!<br />Имеется ли возможность из программы используя API узнать, сколько уже задействовано (использовано) лицензий на сетевом ключе ?</p><p>Нашел на форуме сообщение от 09.04.2013:</p><div class="quotebox"><cite>Антон Тихиенко пишет:</cite><blockquote><div class="quotebox"><cite>Luck пишет:</cite><blockquote><p>А можно ли как-то узнать количество задействованных в данный момент лицензий?</p></blockquote></div><p>Только при помощи стандартного web-интерфейса монитора сервера сетевых ключей, либо парсить данные этого же web-монитора, и таким образом получать информацию о текущем состоянии ключа.</p></blockquote></div><p>С тех пор ничего не изменилось? Не рассматривается ли возможность добавления в API такой функции (или она уже есть, а я ее не увидел)?</p><p>Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (Mikle)]]></author>
			<pubDate>Tue, 16 Feb 2016 08:37:18 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/2986/#p2986</guid>
		</item>
	</channel>
</rss>
