Hi,
you forgot to tag your question, but I'll assume you are still on Python, I'll also assume you are on R21. The license model the methods provided by the SDK changed significantly with R21.
While reading the C++ manuals is often a good idea, the C++ workflow of licensing a plugin has never been directly translatable to Python. With the major difference being that we have no access to Cinema's main license dialog from Python (neither read nor write). For your quoted step-by-step guide the key word would be envisioned in the introducing sentence (which you left out), meaning that the whole procedure is just a proposal.
How do I use the License Report to create a valid plugin license on the server?
The license report in Python would be c4d.GetGeneralLicensingInformation()
. You will have then to create your license key with the product, system and user id provided by that report, depending on what you want your key to be bound to.
How do I 'bind' the plugin to a userID or a systemID?
One way to do it could be to put the relevant information into one string (plus some salt) and then hash that string with a common and secure hash-function like for example sha-1. You could of course also build your own cryptographic hash function, because people will quickly figure out that your license keys are sha-1 hashes from just looking at them.
What would the plugin license file sent by the Vendor Licensing System contain?
At least on Python all this is not defined. The relevant functions to read and write serial information for a plugin are c4d.plugins.WriteRegInfo
and c4d.plugins.WritePluginInfo
and their respective Read
counter parts. Also that whole "Vendor Licensing System" is not defined on Python (and I think also not C++). But if you would build such license model in Python, the license server provided by the vendor would have to send back the serial key it did create from the license information it received. You could also add more data if you would like, since you can store basically anything with the methods mentioned above.
How could I allow the plugin to wait for a couple weeks before checking the license again (so the user doesn't always have to be online to use the software)?
The system described in the C++ example only requires one online activation and so would the Python equivalent I did line out above. Once activated, the serial information would be stored locally and encrypted by Cinema 4D. If you want your plugin to call home on a regular basis, you would have to implement that separately.
But keep in mind that all methods of preventing illegitimate users using your software will be overcome at some point. Leaving only the legitimate users with the hurdles of your licensing system. So it seems wise to design the system in such way, that it keeps the honest users honest, but does not try to prevent any serious attacks.
Cheers,
zipit