public bool IsLicenseActivatedOnline(out string[] result) { result = null; // Verifica a licença string urlParameters = string.Format("?TOKEN={0}&CSERIALK={1}&MHOST={2}&MACADDRESS={3}&AUSER={4}&LICADDRESS={5}&MODE=0", LicToken, dataLicense.SerialKey, dataLicense.ClientIP, dataLicense.CustomerMACAddress, dataLicense.UserName, dataLicense.LicenseAddress); return(LicenseWS.get_CustomerReadyForActivation(urlParameters, dataLicense.Proxy, out result, out exceptionMessage)); }
// Retorna true os dados da localização do computador estão de acordo com a licença (ou seja: existe cadastro preparado para liberar essa licença e a localização está de acordo) public bool ActivateLicense() { // Gera nova chave para a criptografia string SaltKey = Guid.NewGuid().ToString(); string[] result; // Parâmetros para ativação da licença string urlParameters = string.Format("?TOKEN={0}&CSERIALK={1}&MHOST={2}&MACADDRESS={3}&AUSER={4}&LICADDRESS={5}&MODE=9", LicToken, dataLicense.SerialKey, dataLicense.ClientIP, dataLicense.CustomerMACAddress, dataLicense.UserName, dataLicense.LicenseAddress); // Evoca o serviço de ativação // Retorna true se a licença foi validada e ativada isLicenseDistanceValid = LicenseWS.get_CustomerReadyForActivation(urlParameters, dataLicense.Proxy, out result, out exceptionMessage); // Caso a licença não tenha sido ativada: é possível que a licença tenha sido desinstalada, então verifica-se se a licença foi instalada pelo // computador atual e, se foi: permite reativar a licença na máquina. if (!isLicenseDistanceValid) { try { // Verifica se a licença ainda é válida (via site) caso a licença tenha sido ativada e depois o sistema tenha sido desinstalado // Logo: se o sistema foi desinstalado e agora está sendo instalado novamente: deve apenas verificar se a licença é válida via site isLicenseDistanceValid = IsLicenseActivatedOnline(out result); } catch { // Caso existe algum erro de conexão: mantém a licença válida, pois a data do registro está ok isLicenseDistanceValid = false; } } if (isLicenseDistanceValid) { // Seta os dados retornados pela licença (automaticamente são setados no Config também) DateTime dateValue; dataLicense.CustomerWord = result[1]; if (DateTime.TryParse(result[2], out dateValue)) { dataLicense.DueDate = dateValue; } else { return(false); } dataLicense.CustomerID = result[3]; dataLicense.CustomerMachineID = result[4]; dataLicense.IsTrialLicense = result[5].Substring(0, 1) == "T"; // Salva as inormações no registro string regInfo = result[2] + "|" + dataLicense.CustomerWord + "|" + dataLicense.CustomerID + "|" + dataLicense.CustomerMachineID + "|" + dataLicense.IsTrialLicense.ToString() + "|" + dataLicense.SerialKey; regInfo = CriptoRijndael.Encrypt(regInfo, SaltKey, 0); WinRegistry ureg = new WinRegistry(); ureg.Write("UdyatRegister", regInfo); ureg.Write("MacSalt", SaltKey); ureg.Write("UdyatTrial", dataLicense.IsTrialLicense.ToString()); ureg.Write("customerWord", dataLicense.CustomerWord); ureg.Write("customerMN", dataLicense.CustomerMachineID); ureg.Write("customer", dataLicense.CustomerID); return(true); } return(false); }