Пример #1
0
        public override ISiteValidationResult ValidateSiteConfiguration(SiteModel siteModel)
        {
            var installPaths = GetInstallPaths(RegistryDisplayName);

            var validationResult = new SiteValidationResult(Site)
            {
                IsNew      = !siteModel.Configured,
                IsEnabled  = siteModel.Enabled,
                IsDetected = installPaths.Length > 0
            };

            if (!validationResult.IsDetected)
            {
                return(validationResult);
            }

            foreach (var installPath in installPaths)
            {
                var profilesDirectoryPath = Path.Combine(installPath, ProfilesFolder);

                try
                {
                    var profilesDirectory = new DirectoryInfo(profilesDirectoryPath);

                    if (!profilesDirectory.Exists)
                    {
                        continue;
                    }

                    foreach (var settingsFile in profilesDirectory.GetFiles(SettingsFile, SearchOption.AllDirectories))
                    {
                        try
                        {
                            var xmlValues = ReadXmlValues(settingsFile.FullName, new[] { ProfileHandHistoryId, ProfileSaveHandHistoryId });

                            if (xmlValues.ContainsKey(ProfileHandHistoryId) && !string.IsNullOrWhiteSpace(xmlValues[ProfileHandHistoryId]))
                            {
                                validationResult.HandHistoryLocations.Add(xmlValues[ProfileHandHistoryId]);
                            }

                            if (xmlValues.ContainsKey(ProfileSaveHandHistoryId) && (!string.IsNullOrEmpty(xmlValues[ProfileSaveHandHistoryId]) && xmlValues[ProfileSaveHandHistoryId] != CorrectSaveHandHistoryTag))
                            {
                                var issue = string.Format(CommonResourceManager.Instance.GetResourceString("Error_WPN_Validation_SaveHandHistory"), RegistryDisplayName, settingsFile.Directory?.Name);
                                validationResult.Issues.Add(issue);
                            }
                        }
                        catch (Exception ex)
                        {
                            LogProvider.Log.Error(this, $"Error occurred during reading {settingsFile.FullName}", ex);
                        }
                    }
                }
                catch (Exception e)
                {
                    LogProvider.Log.Error(this, $"Could not read data from {profilesDirectoryPath}", e);
                }
            }

            return(validationResult);
        }
Пример #2
0
        public override ISiteValidationResult ValidateSiteConfiguration(SiteModel siteModel)
        {
            var validationResult = new SiteValidationResult(Site)
            {
                IsNew      = !siteModel.Configured,
                IsDetected = DetectSite(),
                IsEnabled  = siteModel.Enabled,
            };

            return(validationResult);
        }
Пример #3
0
        private void InstallAuditIni(SiteValidationResult validationResult)
        {
            try
            {
                var installPaths = GetInstallPaths();

                if (installPaths.Count == 0)
                {
                    return;
                }

                var isPokerStarsRunning = IsPokerStarsRunning();

                var auditPath = GetAuditPath();

                if (!Directory.Exists(auditPath))
                {
                    Directory.CreateDirectory(auditPath);
                    LogProvider.Log.Info($"Created '{auditPath}' folder");
                }

                foreach (var installPath in installPaths)
                {
                    var launchFile = Path.Combine(installPath.FullName, psClientLaunchFile);
                    TryLogPSLaunchFileVersion(launchFile);

                    var auditIniFile = Path.Combine(installPath.FullName, auditIni);

                    if (File.Exists(auditIniFile))
                    {
                        ValidateAuditInitFile(auditIniFile, auditPath);
                        continue;
                    }

                    CreateAuditInitFile(auditIniFile, auditPath);

                    if (isPokerStarsRunning)
                    {
                        var issue = string.Format(CommonResourceManager.Instance.GetResourceString("Error_PS_Validation_ZoomSupport"),
                                                  installPath.Name);

                        validationResult.Issues.Add(issue);
                    }
                }
            }
            catch (Exception ex)
            {
                LogProvider.Log.Error(this, "Could not enable zoom support for PS", ex);
            }
        }
Пример #4
0
        public override ISiteValidationResult ValidateSiteConfiguration(SiteModel siteModel)
        {
            if (siteModel == null)
            {
                return(null);
            }

            // since we don't show HandHistoryLocations on site setup form, we don't need to spend time on reading dirs
            var validationResult = new SiteValidationResult(Site)
            {
                IsNew = !siteModel.Configured,
                HandHistoryLocations = new List <string>(),
                IsEnabled            = siteModel.Enabled,
                IsAutoCenter         = true
            };

            var settingsModel = ServiceLocator.Current.GetInstance <ISettingsService>().GetSettings();

            foreach (var siteName in SiteNames)
            {
                var installPath = GetSiteInstallPath(siteName);

                if (!string.IsNullOrEmpty(installPath))
                {
                    if (settingsModel.GeneralSettings.IsAdvancedLoggingEnabled)
                    {
                        LogProvider.Log.Info($"Site detection: IPoker[{siteName}]: {installPath}");
                    }

                    try
                    {
                        var hhDirs = Directory.EnumerateDirectories(installPath, "*", SearchOption.AllDirectories)
                                     .Where(x => handHistoryLocationPattern.Value.IsMatch(x)).ToArray();

                        validationResult.HandHistoryLocations.AddRange(hhDirs);
                    }
                    catch (Exception e)
                    {
                        LogProvider.Log.Error(this, $"Couldn't get hand history locations for {siteName} at {installPath}", e);
                    }

                    validationResult.IsDetected = true;
                }
            }

            return(validationResult);
        }
Пример #5
0
        public override ISiteValidationResult ValidateSiteConfiguration(SiteModel siteModel)
        {
            var validationResult = new SiteValidationResult(Site)
            {
                IsNew                = !siteModel.Configured,
                IsDetected           = RegistryUtils.UninstallRegistryContainsKeys(uninstallRegistryKeys),
                IsEnabled            = siteModel.Enabled,
                HandHistoryLocations = GetHandHistoryFolders().ToList(),
            };

            if (!validationResult.IsDetected)
            {
                return(validationResult);
            }

            return(validationResult);
        }
Пример #6
0
        public override ISiteValidationResult ValidateSiteConfiguration(SiteModel siteModel)
        {
            if (siteModel == null)
            {
                return(null);
            }

            var handHistoriesLocation = GetHandHistoryFolders();

            var validationResult = new SiteValidationResult(Site)
            {
                IsNew                = !siteModel.Configured,
                IsDetected           = handHistoriesLocation.Length > 0,
                IsEnabled            = siteModel.Enabled,
                HandHistoryLocations = handHistoriesLocation.ToList()
            };

            return(validationResult);
        }
Пример #7
0
        /// <summary>
        /// Validates site settings in both client and DH
        /// </summary>
        /// <param name="siteModel">Model with site settings</param>
        /// <returns>The result of validation</returns>
        public override ISiteValidationResult ValidateSiteConfiguration(SiteModel siteModel)
        {
            if (siteModel == null)
            {
                return(null);
            }

            var configurationDirectories = GetConfigurationDirectories();

            var validationResult = new SiteValidationResult(Site)
            {
                IsNew = !siteModel.Configured,
                HandHistoryLocations = GetHandHistoryFolders().ToList(),
                IsDetected           = configurationDirectories.Count > 0,
                IsEnabled            = siteModel.Enabled,
                FastPokerEnabled     = true
            };


            InstallAuditIni(validationResult);

            foreach (var configurationDirectory in configurationDirectories)
            {
                try
                {
                    var settingsFile = Path.Combine(configurationDirectory.FullName, settingsFileName);

                    if (!File.Exists(settingsFile))
                    {
                        continue;
                    }

                    LogProvider.Log.Info($"Reading PS settings from {settingsFile}");

                    var localeSetting    = IniFileHelpers.ReadValue(iniSection, iniKeyLocale, settingsFile);
                    var hhLocaleSetting  = IniFileHelpers.ReadValue(iniSection, iniKeyHHLocale, settingsFile);
                    var tsLocaleSetting  = IniFileHelpers.ReadValue(iniSection, iniKeyTSLocale, settingsFile);
                    var hhEnabledSetting = IniFileHelpers.ReadValue(iniSection, iniKeySaveMyHands, settingsFile, "0");
                    var tsEnabledSetting = IniFileHelpers.ReadValue(iniSection, iniKeySaveMyTournSummaries, settingsFile, "0");

                    LogProvider.Log.Info($"PS Settings: Locale: {localeSetting}; HHLocale: {hhLocaleSetting}; TSLocale: {tsLocaleSetting}");

                    var isLocaleSettingCorrect = correctLanguageSettings.Contains(localeSetting);

                    bool isHHLanguageCorrect = string.IsNullOrWhiteSpace(hhLocaleSetting) ? isLocaleSettingCorrect : correctLanguageSettings.Contains(hhLocaleSetting);
                    bool isTSLanguageCorrect = string.IsNullOrWhiteSpace(tsLocaleSetting) ? isLocaleSettingCorrect : correctLanguageSettings.Contains(tsLocaleSetting);
                    bool isHHEnabled         = hhEnabledSetting == "1";
                    bool isTSEnabled         = tsEnabledSetting == "1";

                    if (!isHHLanguageCorrect || !isTSLanguageCorrect || !isHHEnabled || !isTSEnabled)
                    {
                        if (!isHHEnabled)
                        {
                            var issue = string.Format(CommonResourceManager.Instance.GetResourceString("Error_PS_Validation_SaveMyHandHistory"),
                                                      configurationDirectory.Name);

                            validationResult.Issues.Add(issue);
                        }

                        if (!isTSEnabled)
                        {
                            var issue = string.Format(CommonResourceManager.Instance.GetResourceString("Error_PS_Validation_SaveTournamentSummaries"),
                                                      configurationDirectory.Name);

                            validationResult.Issues.Add(issue);
                        }

                        if (!isHHLanguageCorrect)
                        {
                            var issue = string.Format(CommonResourceManager.Instance.GetResourceString("Error_PS_Validation_HHLanguage"),
                                                      configurationDirectory.Name);

                            validationResult.Issues.Add(issue);
                        }

                        if (!isTSLanguageCorrect)
                        {
                            var issue = string.Format(CommonResourceManager.Instance.GetResourceString("Error_PS_Validation_TSLanguage"),
                                                      configurationDirectory.Name);

                            validationResult.Issues.Add(issue);
                        }
                    }
                }
                catch (Exception ex)
                {
                    LogProvider.Log.Error(this, "Error during reading of the PS settings", ex);
                }
            }

            return(validationResult);
        }
Пример #8
0
        public override ISiteValidationResult ValidateSiteConfiguration(SiteModel siteModel)
        {
            var validationResult = new SiteValidationResult(Site)
            {
                IsNew      = !siteModel.Configured,
                IsDetected = IsInstalled(),
                IsEnabled  = siteModel.Enabled
            };

            var configurationDirectories = GetConfigurationDirectories();

            foreach (var configurationDirectory in configurationDirectories)
            {
                try
                {
                    var settingsFiles = configurationDirectory.GetFiles(settingsFileName, SearchOption.AllDirectories);

                    foreach (var settingsFile in settingsFiles)
                    {
                        try
                        {
                            if (settingsFile.Directory.Parent.FullName != configurationDirectory.FullName)
                            {
                                continue;
                            }

                            var xmlValues = ReadXmlValues(settingsFile.FullName, new[] { HandHistoryPathTag, IsEnableHistoryTag });

                            if (xmlValues.ContainsKey(HandHistoryPathTag) && !string.IsNullOrWhiteSpace(xmlValues[HandHistoryPathTag]))
                            {
                                validationResult.HandHistoryLocations.Add(xmlValues[HandHistoryPathTag]);
                            }

                            if (xmlValues.ContainsKey(IsEnableHistoryTag) && (xmlValues[IsEnableHistoryTag] != CorrectIsEnableHistorySetting))
                            {
                                var issue = string.Format(CommonResourceManager.Instance.GetResourceString("Error_888_Validation_IsEnableHistory"),
                                                          settingsFile.Directory.Parent.Name);

                                validationResult.Issues.Add(issue);
                            }
                        }
                        catch (Exception ex)
                        {
                            LogProvider.Log.Error(this, $"Error occurred during reading {settingsFile.FullName}", ex);
                        }
                    }
                }
                catch (Exception e)
                {
                    LogProvider.Log.Error(this, $"Could not read data from {configurationDirectory.FullName}", e);
                }
            }

            try
            {
                foreach (var registryKey in LanguageRegistryKeys)
                {
                    var languageRegistryKey = Registry.CurrentUser.OpenSubKey(registryKey);

                    if (languageRegistryKey != null)
                    {
                        var language = Convert.ToUInt32(languageRegistryKey.GetValue(LanguageRegistryKeyValue));

                        if (language != 0)
                        {
                            var issue = string.Format(CommonResourceManager.Instance.GetResourceString("Error_888_Validation_HHLanguage"));
                            validationResult.Issues.Add(issue);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogProvider.Log.Error(this, $"Could not read '{LanguageRegistryKeys}'", ex);
            }

            return(validationResult);
        }