예제 #1
0
        public async Task <bool> Check3DayTrial()
        {
            var filePath = _directoryPath + @"\VeryImportant.dat";

            var persianDate    = PersianDateTime.Now.ToString(PersianDateTimeFormat.DateTime);
            var appVersion     = (await DVersion.GetData())[0].AppVersion;
            var existsFilePath = File.Exists(filePath);

            if ((appVersion == null || !existsFilePath) && (appVersion != null || existsFilePath))
            {
                return(false);
            }

            if (appVersion == null)
            {
                try
                {
                    using (var fileStream = new FileStream(filePath, FileMode.OpenOrCreate))
                        using (var streamWriter = new StreamWriter(fileStream))
                        {
                            streamWriter.WriteLine(StringCipher.Encrypt(persianDate, "RAYMON33"));
                            streamWriter.WriteLine(StringCipher.Encrypt(persianDate, "RAYMON33"));
                            streamWriter.Close();
                        }
                }
                catch (Exception)
                {
                    return(false);
                }
            }

            if (File.Exists(filePath))
            {
                var i        = 0;
                var saveDate = new string[2];
                foreach (var line in File.ReadLines(filePath))
                {
                    try
                    {
                        saveDate[i] = StringCipher.Decrypt(line, "RAYMON33");
                        i++;
                    }

                    catch (Exception)
                    {
                        return(false);
                    }
                }
                var dPersianDate = PersianDateTime.Parse(persianDate.Split(' ')[0], persianDate.Split(' ')[1]);
                var dSaveDate0   = PersianDateTime.Parse(saveDate[0].Split(' ')[0], saveDate[0].Split(' ')[1]);
                var dSaveDate1   = PersianDateTime.Parse(saveDate[1].Split(' ')[0], saveDate[1].Split(' ')[1]);

                if (dPersianDate < dSaveDate1)
                {
                    Utility.MyMessageBox("خطا", "تاریخ سیستم بروز نمی باشد\nبرای اجرای برنامه لطفا تاریخ سیستم را بروزرسانی کنید");
                    OkShutdownApp = true;
                    return(false);
                }

                try
                {
                    EditFile(StringCipher.Encrypt(persianDate, "RAYMON33"), filePath, 2);
                }
                catch (Exception)
                {
                    return(false);
                }

                if ((dPersianDate - dSaveDate0).Days >= 3)
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
            return(true);
        }
예제 #2
0
        private async void Window_Loaded(object sender, RoutedEventArgs e)
        {
            DispatcherTimer.Tick    += dispatcherTimer_Tick;
            DispatcherTimer.Interval = new TimeSpan(0, 0, 0, 10);
            DispatcherTimer.Start();
            try
            {
                new MunicipalArchiveDbConfiguration().Configurate();
            }
            catch (Exception exception)
            {
                Utility.MyMessageBox("خطا", "خطا در ارتباط اولیه با پایگاه داده" + "\n" + exception);
                Process.GetCurrentProcess().Kill();
            }
            //await Task.Run(() => new MunicipalArchiveDbChanges().Configurate());
            var licenseData = new List <tblLicense>();

            try
            {
                licenseData = DLicense.GetData();
            }
            catch (Exception exception)
            {
                Utility.MyMessageBox("خطا", "خطا در ارتباط  با پایگاه داده" + "\n" + exception);
                Process.GetCurrentProcess().Kill();
            }

            var serialNumber = await Task.Run(() => SerialNumber.GetHardwareSerial());

            var salt = new SaltyPasswordHashing
            {
                MaxHashSize = 40,
                SaltSize    = 0
            };
            string applicense = null;

            foreach (var variable in licenseData)
            {
                if (!await Task.Run(() => salt.VerifyHash(serialNumber, variable.AppLicense)))
                {
                    applicense = variable.AppLicense;
                }
            }

            if (applicense == null)
            {
                var checkTime = await Task.Run(CheckWinTimeUpdate);

                var checkTrial = await Task.Run(Check3DayTrial);

                if ((await DVersion.GetData())[0].AppVersion == null)
                {
                    var dVersion = new DVersion
                    {
                        DAppVersion = "1.0.0"
                    };
                    await Task.Run(() => dVersion.Edit());
                }

                if (!checkTime || !checkTrial)
                {
                    if (OkTime && OkShutdownApp)
                    {
                        OkDbChange = true;
                        Application.Current.Shutdown();
                    }
                    if (OkTime && !OkShutdownApp)
                    {
                        var winLicense = new WinLicense();
                        OkDbChange = true;
                        winLicense.Show();
                        Close();
                    }
                    else
                    {
                        ShowWinLicense = true;
                    }
                    return;
                }

                if (OkTime)
                {
                    var winLogin = new WinLogin();
                    OkDbChange = true;
                    winLogin.Show();
                    Close();
                }
                else
                {
                    OkLogin = true;
                }
            }
            else
            {
                if (OkTime)
                {
                    var winLogin = new WinLogin();
                    OkDbChange = true;
                    winLogin.Show();
                    Close();
                }
                else
                {
                    OkLogin = true;
                }
            }
        }
예제 #3
0
        public async Task <bool> CheckWinTimeUpdate()
        {
            var appVersion  = (await DVersion.GetData())[0].AppVersion;
            var filePath    = _directoryPath + @"\IntTi.dat";
            var existsIntTi = File.Exists(filePath);

            if ((appVersion == null || !existsIntTi) && (appVersion != null || existsIntTi))
            {
                return(false);
            }

            string internetTime;
            bool   okInternetTime;

            try
            {
                internetTime   = new PersianDateTime(GetNistTime()).ToString(PersianDateTimeFormat.DateTime);
                okInternetTime = true;
            }
            catch (Exception)
            {
                internetTime   = string.Empty;
                okInternetTime = false;
            }

            if (appVersion == null)
            {
                if (internetTime == string.Empty)
                {
                    internetTime = "1398/04/12 00:00:00";
                }

                try
                {
                    using (var fileStream = new FileStream(filePath, FileMode.OpenOrCreate))
                        using (var streamWriter = new StreamWriter(fileStream))
                        {
                            streamWriter.WriteLine(StringCipher.Encrypt(internetTime, "RAYMON33"));
                            streamWriter.Close();
                        }
                }
                catch (Exception)
                {
                    return(false);
                }
            }

            var intTiData = string.Empty;

            foreach (var line in File.ReadLines(filePath))
            {
                try
                {
                    intTiData = StringCipher.Decrypt(line, "RAYMON33");
                }
                catch (Exception)
                {
                    return(false);
                }
            }

            if (internetTime == string.Empty)
            {
                internetTime = intTiData;
            }
            else
            {
                try
                {
                    EditFile(StringCipher.Encrypt(internetTime, "RAYMON33"), filePath, 1);
                }
                catch (Exception)
                {
                    return(false);
                }
            }
            var persianDateTime  = PersianDateTime.Now.ToString(PersianDateTimeFormat.DateTime);
            var dPersianDateTime =
                PersianDateTime.Parse(persianDateTime.Split(' ')[0], persianDateTime.Split(' ')[1]);
            var dInternetTime = PersianDateTime.Parse(internetTime.Split(' ')[0], internetTime.Split(' ')[1]);

            if (okInternetTime && appVersion != null)
            {
                if (dPersianDateTime <= dInternetTime.AddMinutes(-30))
                {
                    var timeSpan = dInternetTime - dPersianDateTime;
                    Utility.MyMessageBox("خطا",
                                         $"تاریخ و ساعت سیستم شما\nتقریبا {timeSpan.Days} روز و {timeSpan.Hours} ساعت و {timeSpan.Minutes} دقیقه عقب میباشد\nبرای اجرای برنامه لطفا تاریخ سیستم را بروزرسانی کنید");
                    OkShutdownApp = true;
                    return(false);
                }
                if (dPersianDateTime >= dInternetTime.AddMinutes(30))
                {
                    var timeSpan = dPersianDateTime - dInternetTime;
                    Utility.MyMessageBox("خطا",
                                         $"تاریخ و ساعت سیستم شما\nتقریبا {timeSpan.Days} روز و {timeSpan.Hours} ساعت و {timeSpan.Minutes} دقیقه جلو میباشد\nبرای اجرای برنامه لطفا تاریخ سیستم را بروزرسانی کنید");
                    OkShutdownApp = true;
                    return(false);
                }
            }
            else if (dPersianDateTime <= dInternetTime.AddMinutes(-30) && appVersion != null)
            {
                Utility.MyMessageBox("خطا",
                                     "تاریخ و ساعت سیستم بروز نمی باشد\nبرای اجرا شدن برنامه لطفا تاریخ سیستم را بروزرسانی کنید");
                OkShutdownApp = true;
                return(false);
            }
            return(true);
        }