public static int ValidateActivationStatus(string productId, ActivationPayload activationPayload) { var now = GetUtcTimestamp(); if (activationPayload.LeaseExpiresAt != 0 && (activationPayload.LeaseExpiresAt < now || activationPayload.LeaseExpiresAt < activationPayload.IssuedAt)) { LexDataStore.ResetValue(productId, LexConstants.KEY_ACTIVATION_JWT); return(LexStatusCodes.LA_FAIL); } bool skipGracePeriodCheck = (activationPayload.ServerSyncInterval == 0 || activationPayload.ServerSyncGracePeriodExpiresAt == 0); if (!skipGracePeriodCheck && activationPayload.ServerSyncGracePeriodExpiresAt < now) { return(LexStatusCodes.LA_GRACE_PERIOD_OVER); } else if (activationPayload.ExpiresAt != 0 && activationPayload.ExpiresAt < now) { return(LexStatusCodes.LA_EXPIRED); } else if (activationPayload.ExpiresAt != 0 && activationPayload.ExpiresAt < activationPayload.IssuedAt) { return(LexStatusCodes.LA_EXPIRED); } else if (activationPayload.Suspended) { return(LexStatusCodes.LA_SUSPENDED); } else { return(LexStatusCodes.LA_OK); } }
public static int DeactivationErrorHandler(string productId, HttpResponseMessage httpResponse) { if (httpResponse.StatusCode == HttpStatusCode.InternalServerError || httpResponse.StatusCode == HttpStatusCode.ServiceUnavailable) { return(LexStatusCodes.LA_E_SERVER); } if (httpResponse.StatusCode == (HttpStatusCode)LexConstants.HttpTooManyRequests) { return(LexStatusCodes.LA_E_RATE_LIMIT); } if (httpResponse.StatusCode == HttpStatusCode.NotFound) { LexDataStore.ResetValue(productId, LexConstants.KEY_ACTIVATION_JWT); return(LexStatusCodes.LA_E_ACTIVATION_NOT_FOUND); } if (httpResponse.StatusCode == HttpStatusCode.Conflict) { var errorResponse = JsonConvert.DeserializeObject <HttpErrorResponse>(httpResponse.Content.ReadAsStringAsync().Result); if (errorResponse.Code == LexConstants.ActivationErrorCodes.DEACTIVATION_LIMIT_REACHED) { return(LexStatusCodes.LA_E_DEACTIVATION_LIMIT); } } return(LexStatusCodes.LA_E_CLIENT); }
public static int ActivationErrorHandler(string productId, HttpResponseMessage httpResponse) { if (httpResponse.StatusCode == HttpStatusCode.InternalServerError || httpResponse.StatusCode == HttpStatusCode.ServiceUnavailable) { return(LexStatusCodes.LA_E_SERVER); } if (httpResponse.StatusCode == (HttpStatusCode)LexConstants.HttpTooManyRequests) { return(LexStatusCodes.LA_E_RATE_LIMIT); } if (httpResponse.StatusCode == HttpStatusCode.NotFound) { LexDataStore.ResetValue(productId, LexConstants.KEY_ACTIVATION_JWT); return(LexStatusCodes.LA_E_ACTIVATION_NOT_FOUND); } if (httpResponse.StatusCode == HttpStatusCode.BadRequest) { var errorResponse = JsonConvert.DeserializeObject <HttpErrorResponse>(httpResponse.Content.ReadAsStringAsync().Result); if (errorResponse.Code == LexConstants.ActivationErrorCodes.ACTIVATION_LIMIT_REACHED) { return(LexStatusCodes.LA_E_ACTIVATION_LIMIT); } // server sync fp validation failed if (errorResponse.Code == LexConstants.ActivationErrorCodes.INVALID_ACTIVATION_FINGERPRINT) { LexDataStore.ResetValue(productId, LexConstants.KEY_ACTIVATION_JWT); return(LexStatusCodes.LA_E_MACHINE_FINGERPRINT); } if (errorResponse.Code == LexConstants.ActivationErrorCodes.VM_ACTIVATION_NOT_ALLOWED) { LexDataStore.ResetValue(productId, LexConstants.KEY_ACTIVATION_JWT); return(LexStatusCodes.LA_E_VM); } if (errorResponse.Code == LexConstants.ActivationErrorCodes.INVALID_PRODUCT_ID) { LexDataStore.ResetValue(productId, LexConstants.KEY_ACTIVATION_JWT); return(LexStatusCodes.LA_E_PRODUCT_ID); } if (errorResponse.Code == LexConstants.ActivationErrorCodes.INVALID_LICENSE_KEY) { LexDataStore.ResetValue(productId, LexConstants.KEY_ACTIVATION_JWT); return(LexStatusCodes.LA_E_LICENSE_KEY); } if (errorResponse.Code == LexConstants.ActivationErrorCodes.AUTHENTICATION_FAILED) { LexDataStore.ResetValue(productId, LexConstants.KEY_ACTIVATION_JWT); return(LexStatusCodes.LA_E_AUTHENTICATION_FAILED); } if (errorResponse.Code == LexConstants.ActivationErrorCodes.COUNTRY_NOT_ALLOWED) { LexDataStore.ResetValue(productId, LexConstants.KEY_ACTIVATION_JWT); return(LexStatusCodes.LA_E_COUNTRY); } if (errorResponse.Code == LexConstants.ActivationErrorCodes.IP_ADDRESS_NOT_ALLOWED) { LexDataStore.ResetValue(productId, LexConstants.KEY_ACTIVATION_JWT); return(LexStatusCodes.LA_E_IP); } if (errorResponse.Code == LexConstants.ActivationErrorCodes.REVOKED_LICENSE) { LexDataStore.ResetValue(productId, LexConstants.KEY_ACTIVATION_JWT); return(LexStatusCodes.LA_E_REVOKED); } if (errorResponse.Code == LexConstants.ActivationErrorCodes.INVALID_LICENSE_TYPE) { LexDataStore.ResetValue(productId, LexConstants.KEY_ACTIVATION_JWT); return(LexStatusCodes.LA_E_LICENSE_TYPE); } if (errorResponse.Code == LexConstants.ActivationErrorCodes.METER_ATTRIBUTE_USES_LIMIT_REACHED) { return(LexStatusCodes.LA_E_METER_ATTRIBUTE_USES_LIMIT_REACHED); } return(LexStatusCodes.LA_E_CLIENT); } return(LexStatusCodes.LA_E_INET); }