Getting Serial number in NETrender
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2007 at 11:14, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 10.111
Platform: Windows ;
Language(s) : C++ ;---------
Hi,I use the following code to get CINEMA's serial number:
SerialInfo si; GeGetSerialInfo(SERIAL_CINEMA4D,&si;); String sn = si.nr;
Withing CINEMA 4D, this works perfectly. But when I try to run the plugin in NETrender, sn contains no serial number.
How do I access the C4D serial number while running in NETrender? Thanks for help.
Greetings,
Jack -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2007 at 11:20, xxxxxxxx wrote:
You don't need to check for a serial number with Net render - since the user will need to have the plugin installed on the server side (main install) with a serial number already. Basically, you don't access it there.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2007 at 11:25, xxxxxxxx wrote:
But on Server side, I also don't get a serial with the above shown code. Just an empty string.
And if I don't check the serial on NETrender Server, the user can use the plugin for NETrendering without license, since I use the C4D serial number for generating the license code of my plugin.
Greetings,
Jack -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2007 at 11:45, xxxxxxxx wrote:
Is this in Cinema 4D or in the server where you are getting an empty serial number string? As you know, there are three executables here:
Cinema 4D.exe
server.exe
client.exeThe latter two never need serial association - and, as you see, never return any!
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2007 at 11:54, xxxxxxxx wrote:
When I use it in CINEMA 4D.exe, it works and returns me the 11 digits of C4D's serial number.
When I use it in server.exe or client.exe, it returns me an empty string.
So if I shouldn't check the serial in server.exe, how can I prevent somebody running the plugin in a render farm without licensing it?
Regards,
Jack -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 12/10/2009 at 23:58, xxxxxxxx wrote:
Hi Jack,
did you found a solution for this?? today a customer asked me why my plugin doesnt work (no license) on his render nodes...
would be cool if you could put some light here
cheers,
ello -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/10/2009 at 01:28, xxxxxxxx wrote:
I can only speak for myself, but I and most others keep it simple.
If a user have no license for the plugin based on a main app serial
(C4D) they get no support from me for NET (Server and Client).It makes life easier both for me, but most of all, for my customers.
Very little to gain financially by making things more complicated
to install.
My experience is that renderfarms of dignity do buy a license.Cheers
Lennart -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/10/2009 at 02:44, xxxxxxxx wrote:
hi Lennart,
the user has a license for his main app serial and it works.. it kust occured since he wants to create an animation and noticed that my plugin doesnt register when using netrender..now i need to know what to do, so that he can use it with netrenderer. i am thinking of making a special node price but i was wondering how to make license test with netrenderer. does it just return another number here:
GeGetSerialInfo(SERIAL_CINEMA4D, &serial;);
serial.nr
??and if so, which number is passed? the serial of netrenderer??
my problem is that i dont have netrenderer and so i have no clue how to check this..
thanks and cheers,
ello -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/10/2009 at 03:43, xxxxxxxx wrote:
It seems that GeGetSerialInfo() is not working in NET. Please use the SNHookClass class for serialization in NET. SNCheck() passes the NET serial to you.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/10/2009 at 04:00, xxxxxxxx wrote:
thank you matthias! i'll try that..
btw, is there a way for me to check out if it works, without having the net renderer?? i guess not?
cheers and thanks,
ello -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/10/2009 at 05:00, xxxxxxxx wrote:
You should get the serial (11 digits) with:
SysGetUserInfo(0); // for all serialized versions
except the MultiLicense version where you use:
SysGetUserInfo(6);You check version by ie;
if(GeGetVersionType()&VERSION;_CINEMA4D)
if(GeGetVersionType()&VERSION;_SERVER)
if(GeGetVersionType()&VERSION;_SAVABLEDEMO)
if(GeGetVersionType()&VERSION;_SAVABLEDEMO_ACTIVE),etcI guess you need to ask someone with NET to test for you.
Cheers
Lennart -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/10/2009 at 11:48, xxxxxxxx wrote:
is there any snippet that simply prints out the serial using SNHookClass ? I am not able to understand how the example in the doc is working and the search i did here gave me something much more complex by kuroyume, which i dindt understand by any means ..
would be cool if someone could help me with this, i just need that first 11 digit, no encryption or such stuff..
cheers,
ello -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/10/2009 at 11:51, xxxxxxxx wrote:
Check out the SDK examples. There is an example SNHook.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/10/2009 at 12:45, xxxxxxxx wrote:
thats what i was reffering to, when speaking of the docs...
i just dont manage to get an idea where i can get the NET licensenumber there...i have set up this code and now i dont know how to go on to get the 11 digits of the NET license
> `
\> #include <c4d.h> \> #include <string.h> \> #include "lib_sn.h" \> \> const LONG MY_SERIAL_ID = 8564886; \> \> class serialTest : SNHookClass \> { \> private: \> const String title; \> public: \> serialTest() : title ("serial test") {} \> Bool Register(LONG id, LONG flags) \> { \> GePrint("starting serialTest..."); \> return TRUE; \> } \> virtual LONG SNCheck(const String &c4dsn;,const String &sn;,LONG regdate,LONG curdate) \> { \> // ... \> return SN_WRONGNUMBER; \> } \> \> virtual const String& GetTitle() \> { \> return title; \> } \> }; \> \> static serialTest* serial = NULL; \> \> Bool RegisterSerialTest() \> { \> serial = gNew serialTest; \> return serial->Register(MY_SERIAL_ID, SNFLAG_OWN); \> } \> \> Bool PluginStart(void) \> { \> SerialInfo serial; \> GeGetSerialInfo(SERIAL_CINEMA4D,&serial;); \> GePrint("Serial:" + serial.nr); \> return TRUE; \> } \> \> void FreeMySerial(void) \> { \> gDelete(serial); \> } \> \> void PluginEnd(void) \> { \> } \> \> Bool PluginMessage(LONG id, void *data) \> { \> switch (id) \> { \> case C4DPL_INIT_SYS: \> if (!resource.Init()) return FALSE; // don't start plugin without resource \> if (!RegisterSerialTest()) return FALSE; \> return TRUE; \> case C4DMSG_PRIORITY: \> return TRUE; \> case C4DPL_ENDACTIVITY: \> FreeMySerial(); return TRUE; \> } \> return FALSE; \> } \>
`
cheers,
ello -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/10/2009 at 13:06, xxxxxxxx wrote:
for example, where do i get regdate and curdate from to pass it to SNCheck??
or generally, how do i call SNCheck and how do i get the NET Number from it? -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/10/2009 at 14:45, xxxxxxxx wrote:
LONG SNCheck(const String& c4dsn, const String& sn, LONG regdate, LONG curdate)
SNCheck is called for you when you call Register(). Here's my entire Main.cpp with SNHookClass. Note that I donot check the serial number when running Demo, Net, Server.
>
// Includes \> #ifdef MACOS \> #include "Rijndael_Mac.h" \> #else \> #include "Rijndael.h" \> #endif \> #include "c4d.h" \> #include "lib_sn.h" \> #include "general.h" \> \> // Size of serial number string \> #define ENTRY_SIZE 17 \> \> // KDZSerial: Serial Number Hook Class \> class KDZSerial : public SNHookClass \> { \> private: \> // Data \> const String SNPluginName; \> // Methods \> // - KDZSerial.checkSerial \> //\*---------------------------------------------------------------------------\* \> Bool checkSerial(const String& c4dsn, const String& sn) \> //\*---------------------------------------------------------------------------\* \> { \> // Key is 11-Digit C4D SN + 5-Char PluginCode + NullTerminator \> char key[ENTRY_SIZE]; \> c4dsn.GetCString(&key;[0], c4dsn.GetCStringLen()+1L, St7bit); \> // Example \> key[11] = 'x'; \> key[12] = 'x'; \> key[13] = 'x'; \> key[14] = 'x'; \> key[15] = 'x'; \> key[16] = 0; \> \> // Encrypt plugin serial no. using AES \> char dout[ENTRY_SIZE] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; \> // One block testing \> CRijndael oRijndael; \> if (!oRijndael.MakeKey(&key;[0], "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16, 16)) \> { \> MessageDialog(GeLoadString(PDRERR_SNMAKEKEY)); \> return FALSE; \> } \> char din[ENTRY_SIZE]; \> memcpy(&din;[0], &key;[0], ENTRY_SIZE); \> if (!oRijndael.EncryptBlock(din, dout)) \> { \> MessageDialog(GeLoadString(PDRERR_SNENCRYPTION)); \> return FALSE; \> } \> dout[16] = 0; // Null-terminate \> \> UINT i; \> UCHAR val; \> // Convert to AlphaNumerics for user serial number entry \> for (i = 0; i != 16; ++i) \> { \> val = (UCHAR)dout[i]; \> // Beyond AlphaNumerics \> if (val > 122) val /= 3; \> // Below AlphaNumberics \> if (val < 48) val += 48; \> // Between numerals and UC Alpha \> if ((val > 57) && (val < 65)) val += 24; \> // Between UC Alpha and LC Alpha \> if ((val > 90) && (val < 97)) val += 12; \> dout[i] = (char)val; \> } \> dout[16] = 0; // Null-terminate \> \> sn.GetCString(&key;[0], sn.GetCStringLen()+1L, St7bit); //ENTRY_SIZE, St7bit); \> // Check sn against Encrypted-AlphaNumericized dout \> for (i = 0; i != 16; ++i) \> { \> //GePrint("key["+LongToString(i)+"]=\'"+LongToString(key[i])+"\' == chk["+LongToString(i)+"]=\'"+LongToString(dout[i])+"\'"); \> if (key[i] != dout[i]) \> { \> MessageDialog(GeLoadString(PDRERR_SNINVALID)); \> return FALSE; \> } \> } \> return TRUE; \> } \> public: \> // Data \> // - mode = 0 (not registered/not demo), 1 (demo), 2 (registered) \> UCHAR mode; \> LONG time; \> // Methods \> // - Constructor \> //\*---------------------------------------------------------------------------\* \> KDZSerial() : SNPluginName("PipeDream") \> //\*---------------------------------------------------------------------------\* \> { \> mode = 0; \> } \> // - SNHookClass.SNCheck \> //\*---------------------------------------------------------------------------\* \> LONG SNCheck(const String& c4dsn, const String& sn, LONG regdate, LONG curdate) \> //\*---------------------------------------------------------------------------\* \> { \> if (!sn.Content()) return SN_WRONGNUMBER; \> \> // Demo mode (14 day trial) \> if (sn.GetLength() == 4L) \> { \> // Case-insensitive serial number 'demo' \> if (sn.LexCompare("DEMO")) return SN_WRONGNUMBER; \> \> if (!regdate) \> { \> mode = 1; \> return SN_OKAY; \> } \> \> // Calculate timeout of Demo or Beta modes \> LONG timeout = 14L - (curdate - regdate); \> if (timeout < 0L) return SN_EXPIRED; \> time = timeout; \> mode = 1; \> if (timeout <= 14L) return SN_EXPIRE_14 - timeout; \> return SN_OKAY; \> } \> // Registered user \> else if (sn.GetLength() == 16L) \> { \> if (checkSerial(c4dsn, sn)) \> { \> mode = 2; \> return SN_OKAY; \> } \> } \> #ifdef C4D_R11 \> // Multi-License Server \> else \> { \> // Check for R11 Multi-License \> SerialInfo mlsn; \> GeGetSerialInfo(SERIAL_MULTILICENSE, &mlsn;); \> if (mlsn.nr.Content()) \> { \> //-------------------------------------------------------------------------------- \> // Note that we also need to skip over the extra data added to the front of the \> // plugin's license key (11 digits/characters and a dash)... \> //-------------------------------------------------------------------------------- \> String plug_sn = sn; \> LONG dashPos; \> if (plug_sn.FindFirst("-", &dashPos;, 0L)) \> { \> plug_sn = plug_sn.SubStr(dashPos+1L, plug_sn.GetLength()-dashPos-1L); \> if (checkSerial(mlsn.nr, plug_sn)) \> { \> mode = 2; \> return SN_OKAY; \> } \> } \> } \> } \> #else \> else MessageDialog(GeLoadString(PDRERR_SNSIZE)); \> #endif \> \> return SN_WRONGNUMBER; \> } \> // - SNHookClass.GetTitle \> //\*---------------------------------------------------------------------------\* \> const String& GetTitle() \> //\*---------------------------------------------------------------------------\* \> { \> return SNPluginName; \> } \> }; \> \> static KDZSerial\* kdzSerial = NULL; \> \> //\*---------------------------------------------------------------------------\* \> Bool RegisterKDZSerial() \> //\*---------------------------------------------------------------------------\* \> { \> kdzSerial = gNew KDZSerial(); \> if (!kdzSerial) return ErrorException::Throw(GeLoadString(PDRERR_MEMORY), "main.RegisterKDZSerial.kdzSerial"); \> return kdzSerial->Register(ID_PIPEDREAMOBJ, SNFLAG_OWN); \> } \> //\*---------------------------------------------------------------------------\* \> void FreeKDZSerial() \> //\*---------------------------------------------------------------------------\* \> { \> gDelete(kdzSerial); \> } \> \> \> // Plugin Functions ================================================================================================== \> \> // Declare Global Plugin Registrants \> Bool RegisterPipeDreamObj(); \> Bool RegisterPipeDreamTag(); \> \> //\*---------------------------------------------------------------------------\* \> Bool PluginStart() \> //\*---------------------------------------------------------------------------\* \> { \> Bool network = FALSE; \> LONG vtype = GeGetVersionType(); \> if ((vtype & VERSION_SERVER) || (vtype & VERSION_NET)) network = TRUE; \> #ifdef C4D_R11 \> if (vtype & VERSION_DEMO) GePrint("C4D Demo"); \> else if (vtype & (VERSION_SAVABLEDEMO|VERSION_SAVABLEDEMO_ACTIVE)) GePrint("C4D Savable Demo"); \> else if (vtype & VERSION_SERVER) GePrint("C4D Server"); \> else if (vtype & VERSION_NET) GePrint("C4D Net"); \> else \> { \> // serial number check \> if (!(kdzSerial && kdzSerial->mode)) return FALSE; \> } \> #else \> if (!((vtype & VERSION_DEMO) || network)) \> { \> // serial number check \> if (!(kdzSerial && kdzSerial->mode)) return FALSE; \> } \> #endif \> \> GePrint(" "); \> GePrint(GeLoadString(PDRS_PLUGIN_BANNER)); \> GePrint("-- "+GeLoadString(PDRS_PLUGIN_NAME)+" "+GeLoadString(PDRS_PLUGIN_EDITION)+" v"+GeLoadString(PDRS_PLUGIN_VERSION)+" "+GeLoadString(PDRS_PLUGIN_COPYRIGHT)); \> if (kdzSerial) \> { \> if (kdzSerial->mode == 1) GePrint("-- Trial: "+LongToString(kdzSerial->time)+" days left"); \> else if (kdzSerial->mode == 2) \> { \> SerialInfo si; \> GeGetSerialInfo(SERIAL_CINEMA4D, &si;); \> GePrint("-- Licensed to: "+si.name); \> } \> } \> GePrint(GeLoadString(PDRS_PLUGIN_BANNER)); \> GePrint(" "); \> \> return RegisterPipeDreamObj() && RegisterPipeDreamTag(); \> } \> \> //\*---------------------------------------------------------------------------\* \> void PluginEnd() \> //\*---------------------------------------------------------------------------\* \> { \> } \> \> //\*---------------------------------------------------------------------------\* \> Bool PluginMessage(LONG id, void\* data) \> //\*---------------------------------------------------------------------------\* \> { \> if (id == C4DPL_INIT_SYS) \> { \> // initialize global resource object \> if (!resource.Init()) return FALSE; \> \> // initialize and register Serial Number Hook \> LONG vtype = GeGetVersionType(); \> #ifdef C4D_R11 \> if (vtype & VERSION_DEMO) { GePrint("C4D Demo"); return TRUE; } \> if (vtype & (VERSION_SAVABLEDEMO|VERSION_SAVABLEDEMO_ACTIVE)) { GePrint("C4D Savable Demo"); return TRUE; } \> if (vtype & VERSION_SERVER) { GePrint("C4D Server"); return TRUE; } \> if (vtype & VERSION_NET) { GePrint("C4D Net"); return TRUE; } \> #else \> if ((vtype & VERSION_DEMO) || (vtype & VERSION_SERVER) || (vtype & VERSION_NET)) return TRUE; \> #endif \> return RegisterKDZSerial(); \> } \> else if (id == C4DPL_ENDACTIVITY) \> { \> FreeKDZSerial(); \> return TRUE; \> } \> else if (id == C4DMSG_PRIORITY) return TRUE; \> return FALSE; \> }
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/10/2009 at 23:57, xxxxxxxx wrote:
thank you very much... lets see if i can get the hang of all this finally
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 14/10/2009 at 11:58, xxxxxxxx wrote:
Quote: __
>
> * * *
>
> Note that I donot check the serial number when running Demo, Net, Server.
>
> * * *doesn't that mean that everyone using net could use the plugin??
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 14/10/2009 at 12:40, xxxxxxxx wrote:
Quote: Originally posted by anubis23 on 14 October 2009
>
> * * *
>
>> Quote: __
>>
>> * * *
>>
>> Note that I donot check the serial number when running Demo, Net, Server.
>
>>
>> * * *
>
>
>
>
> doesn't that mean that everyone using net could use the plugin??
>
>
> * * *Yes, but you can't do anything useful except rendering in NET, for example you can't create scenes.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 14/10/2009 at 12:46, xxxxxxxx wrote:
To render and that is all.
Can't do much else without the registered plugin in Cinema 4D itself.