Grace period set according to days left

Hello.We want our users to not be deactivated due no internet connection. So what we are doing is : when our program is started, we calcucate the remaining days to the end of the license and set them as a grace period.

My question is : Is this approach appropriate and could it cause unexpected errors?

That's the wrong way to approach things.

If you don't want any user to be required to re-verify with the servers: just use IsActivated() -- it does the activation verification completely client-side.

If you don't want offline-activated users to be required to re-verify with the servers, then use IsGenuineEx() with the TA_SKIP_OFFLINE flag.

If we only use IsActivated() and it works only locally how then it is possible to know that a license is deleted or revoked?

You won't, but arbitrarily (and indefinitely) extending the grace period for IsGenuineEx() means that a customer can just block access to the activation servers and thus never need to reverify, and thus can use a license indefinitely (even if you revoke or delete a key).

Does that make sense?

So, that's why I'm saying to either use IsGenuineEx() as it was designed, or you might as well just use IsActivated().

We are actually shrinking it and never extending it.Can you tell us more about the possible user actions that can make the IsGenuineEx() never to contact servers?

We have come up with a different solution that is 1. Check if internet connection is available 1.1 if yes - use IsGenuineEx1.2 else - use IsActivated()

No, that won't work. A user could just block "internet access" (I put it in quotes because detecting internet access is not something that can be done reliably -- that is there's no way to detect legitimate "no internet" vs. fraudulent "blocking internet so I can use the app forever for free").

That's why we offer offline activation. So, use IsGenuineEx() with the TA_SKIP_OFFLINE flag, and thus that have legitimately activated offline won;'t be required to reverify with the servers every X days. And those that have legitimately activated online will be required to reverify with the servers every X days.

Does that make sense?

Yes it does. Thank you!

Just one last question. Is there any way in which we can get the remaining grace days. I can see a function in TurboActivate.h , but it seems to be deprecated. We want to warn our users to contact the internet and give them a countdown in the message. If there is a built-in feature it will be great instead of implementing it by ourselves.

TurboActivate 4.0, out soon, will have a TA_GenuineDays() function which you'll be able to use to get the days until the next check and the grace period days.

Is it possible to use the deprecated function until then ?

No, that function (GracePeriodDaysRemaining) doesn't do what you think it does. It has nothing to do with IsGenuineEx(). It's (sort of) a precursor to the IsGenuineEx() function (but not really). GracePeriodDaysRemaining() doesn't even exist anymore with TurboActivate 4.0 -- we've completely removed it. It's a confusing and ultimately pointless function that should have never been included in TurboActivate in the first place.

Short answer: that function isn't what you're looking for.

With TA 3.x there's no way to get the IsGenuineEx() grace days remaining or the days until the next check.

With TA 4.x (and newer) the way to get the TA_IsGenuineEx() grace days remaining or the days until the next check is to use TA_GenuineDays().

Okay then. I'll make my own function with blackjack and hookers 👽 👽 👽