[FEATURE REQUEST] Unique server number on VServer
Peter De Berdt
peter.de.berdt at pandora.be
Wed Jul 21 23:59:10 CDT 2004
>>> Would it be possible to obtain a semi-unique serial number (e.g. MAC
>>> Address) from the server through an SQL Query?
>> Do you mean physical address of the network connection, something like
>> XX-XX-XX-XX-XX-XX?
>>
>> Currently this is not implemented, but I think that we can add this to
>> VServer
>> class interface. Say,
>>
>> String s = VServer.GetMacAddress()
>>
That's exactly what I'd need
>> What do you think, Ruslan?
>
> * I need more info about what is Mac address.
>
> * if this is simply Ethernet card address, then I think more correctly
> use
> other name.
Yes, it simply the Ethernet card address, but in all programming
languages, it's called MAC Address: Media Access Control Address.
The only thing that can break it, is when there are two or more network
interfaces available on the system (e.g. Ethernet and Airport). It's a
simple toolbox call, if I'm right. You can see it on MacOS X when you
open up System Profiler and look under network (e.g.
00:30:65:12:44:5c).
The IP address won't do, it's very easily changed with basic system
knowledge.
>
> * and I'd like to get more detailed picture what you try to do.
>> From first letter I have not understand good.
> In steps...
> server here,
> my client app here,
> user try do not legal thing as...
> I want protect using this idea...
>
OK, let me explain:
A year or two back, we used Rainbow dongles to protect our software
from being installed on two servers. Due to various reasons (they
didn't work on MacOS X, customers that switched systems needed a new
dongle, the price went up), we decided to implement a new way of
preventing our software to be installed on two systems:
1. Using the client's id (every customer has its own id in our
database) and the most unique number you can obtain on a computer
system, being the MAC Address (it can be spoofed and it has its flaws,
but for decent protection it's about the only thing you can use), we
create a license key (an encrypted string). This is done on a client,
but it gets the MAC Address from the server (because each workstation
has a different MAC Address of course).
2. This license key is sent to our own company server (by pressing a
button in our application), which is running a database containing all
customer licenses and activated modules (our software has several
modules that can be active or disabled). Now we can have three
scenarios:
• The customer's license has an empty MAC Address field in our
database (first use of our software) -> The MAC Address is extracted
from the license key and is put in our database, an encrypted string is
sent back, approving the license and activating the purchased modules
and number of concurrent users
• The customer's license already has a MAC Address field filled in in
our database and it matches the one being sent in the request -> the
customer gets an approved license back and activates the purchased
modules and number of concurrent users (e.g. the purchased an extra
user or module)
• The customer's license already has a MAC Address field filled in in
our database and it doesn't match the one being sent in the request ->
the customer gets a message saying his system information has changed
and he needs to provide a reason why. This reason is then manually
reviewed and if it is a valid reason, the MAC Address field in our
database is cleared so they can reregister it
With single user applications, I can just use (in RB 5.5):
Dim ni as NetworkInterface
ni=System.GetNetworkInterface
StaticText1.Text=ni.MacAddress
However, for a multi-user version of our app (using Valentina Server),
I would need to be able to get the MAC Address of the server and I
would prefer if I didn't have to put an extra application besides
Valentina Server to do just this.
Now you may ask: why not register the application on the server?
Because most of the times, it's one of the employees that calls for
support and they don't have access to the server or don't know how to
use it. If we can tell them to push a button in our app on their
workstation (and they have an internet connection on their computer),
it's something they CAN do :-)
Hope this clears things up...
Best regards
Peter De Berdt
More information about the Valentina-beta
mailing list