Zoo plugin issue

We are implementing the zoo for our plugin RhinoPiping.
However the standalone license activation works from the plugin, it works also when adding a license to the zoo, but when trying to get the plugin license from the zoo serveur, I’ve got a message:

“The RhinoPiping license returned by the zoo server “” is invalid”

What is really strange is that the zoo manager actually shows that the RhinoPiping license status get swapped to “In Use” as if it had succeed!
I know the zoo itself it working properly because I get my Rhino License from it.

Any Idea? Might it be an issue with zoo v5?

Another thing: when I close rhino, its license is released but RhinoPiping’s license stays “In Use”!

Hi Matthieu,

Make sure your Zoo plug-in’s ValidateProductKey member fills in all of the required fields as defined by the ZooPluginLicenseData class


The ZooAdmin’s display is not real-time - you can refresh the screen by pressing F5.

– Dale

Hi, this was not a refresh issue, pressing F5 or the refresh button didn’t change a thing. And all the fields are filled for both Rhino and zoo plugin.

But I just tried with Zoo6 and it works, so I’m pretty sure it was a bug or a version issue with the zoo5.

Thanks for your help

I’m currently having this exact issue with Zoo7. The license gets entered into Zoo and it first displays it as available. When starting Rhino, the response is 'The [Plugin Name] license returned by the zoo server [IP Address] is invalid. However, in the Zoo console, it displays the license as In-Use and I cannot release it. I have double-checked that I filled all the fields of ZooPluginLicenseData class as demonstrated in the Zoo6 example.

Edit: forgot to mention that I am using Rhino 6

Using Rhinocommon:

When using the Zoo to hold licenses for a plugin, is the Rhino plugin’s OnValidateProductKey passed to GetLicense in the plugin supposed to validate the product key coming from the Zoo or just product keys entered by the user within Rhino?

I think only the product key is passed to Rhino.

If a plugin is supposed to validate product keys coming both from the user-specified option (within Rhino) and also coming from a lan zoo server, how is a plugin supposed to differentiate between these two cases from within the ValidateProductKey delegate?

If a license has been entered into the zoo console, shouldn’t it be assumed that the plugin has already verified the license through its zoo plugin and allowing zoo to control/enforce that license?

Why do you need to do this? Why does it matter where the license comes from?

The Zoo licensing system requires that your Rhino plug-in treat all licenses the same, whether they come from a LAN Zoo or are read off of the local disk.

– Dale

I am trying to enforce a licensing system where a unique product key can be used as a node-locked license or can be distributed by a lan zoo server. The idea is that if the user enters the product key into the Rhino prompt, it gets locked at that node and our servers know about it via the ValidateProductKey. If the user enters adds it to a lan zoo console, it gets validated there and then our servers know it is being controlled by a lan zoo.

If from within the Rhino plugin, we cannot tell if a product key is coming from the user or their local network’s zoo server, it becomes impossible to tell if the user is using the product key already validated by the lan zoo or if they are entering it at another machine.

I was hoping the lan zoo could be used to validate the license once over the network so that the user did not require internet access to outside servers each time they used Rhino. But I don’t think that this is possible then.

All this should be possible as long as you store additional information along with your license.

For example, on the Zoo side inside of your plug-in’s ValidateProductKey implementation, just make sure the ZooPluginLicenseData.ProductLicense property contains something that indicates the license was validated from a Zoo server. Perhaps this is a delimited string that you know how to decipher.

Likewise on the Rhino plug-in side, your plug-in’s OnValidateProductKey override can do the same, except the property is LicenseData.ProductLicense.

Make sense?

– Dale

Ah! Yes that makes sense. Thank you for the help.