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); }
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; } } }
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); }