The aim is to have a system that would allow any user on any client machine of a home network to be able to use my software. Activations outside of this network would not be allowed.
The base for this is web API which holds various license keys. You can do the usual queries of this API - verify, create, update etc. There's facility to have number of activations and max activations etc. Idea being the user is sent an license key to activate their product.
The simple process would be the user chooses "activate product", types in their key, the software checks with the API whether this is valid and within the remaining number of activations and the API returns relevant info. You can send info to the API (any custom string) and possibly store it server-side.
The real challenge is the constraint of not allowing activations outside of a home network. The things I've considered:
Sending the public IP to the API and storing it there and comparing any other activations. Problem being dynamic IPs + changes of ISP??
Handling this within the home network. For example, if the first activation is on Client A, then when a new installation attempts activation on Client B, the software can check in some shared location for a file/key. I was originally thinking %appdata% or the registry but my cursory reading reveals that there is not 'automatic syncing' of such across a home network.
I wonder about any registered copy of the software producing an encrypted file on demand that contains some kind of unique identifier of the home network which can then be imported into another client to activate it. The import would check the network identifier against it's own calculation of this and if they match, activation is approved. This would also get around any problems of identifiers changing due to network hardware or infrastructure changes, as the 'key file' would be contemporaneous and thus relevant to both machines.
I'm wanting to keep it simple. I'm not precious about piracy, and realise no system is water tight. Just enough to discourage people sharing keys whilst also allowing them to set up multiple machines with the software in their own home.
I would appreciate any views + suggestions.