示例#1
0
        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));
        }
示例#2
0
        // 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);
        }