public RsopPot RsopPotsEqual(List <RsopPot> rsopPots, Rsop currentRsop) { RsopPot foundPot = null; foreach (var pot in rsopPots) { var rsop = pot.Rsops.FirstOrDefault(); if (rsop == null) { continue; } var auditSettingsEqual = SettingsEqual(rsop.AuditSettings, currentRsop.AuditSettings); if (!auditSettingsEqual) { continue; } var policiesEqual = SettingsEqual(rsop.Policies, currentRsop.Policies); if (!policiesEqual) { continue; } var registrySettingsEqual = SettingsEqual(rsop.RegistrySettings, currentRsop.RegistrySettings); if (!registrySettingsEqual) { continue; } var securityOptionsEqual = SettingsEqual(rsop.SecurityOptions, currentRsop.SecurityOptions); if (!securityOptionsEqual) { continue; } var domainsEqual = rsop.Domain.Equals(currentRsop.Domain); if (!domainsEqual) { continue; } if (RsopAndRsopPotsOuEqual(currentRsop, rsop)) { continue; } pot.Rsops.Add(currentRsop); foundPot = pot; break; } return(foundPot); }
private static RsopPot RsopPotFactory(Rsop rsop) { return(new RsopPot { Name = index++ + ". Group of identical security settings", DateTime = DateTime.Now.ToString("g", CultureInfo.InvariantCulture), Domain = rsop.Domain, Rsops = new List <Rsop> { rsop } }); }
private void AnalyseEachXml(FileInfo[] rsopXml, List <Rsop> rsops) { foreach (var xml in rsopXml) { var doc = new XmlDocument(); try { doc.Load(xml.FullName); } catch (Exception e) { throw new InvalidXmlException("Your provided Xml-File is not an valid", e.Message); } var rsopJson = XmlToJson(doc); var allRsopGpos = GetAllRsopGpos(rsopJson); var auditSettings = AnalyseAuditSettings(rsopJson); var securityOptions = AnalyseSecurityOptions(rsopJson); var policies = AnalysePolicies(rsopJson); var registrySettings = AnalyseRegistrySetting(rsopJson); var organisationalUnit = GetOrganisationalUnitOfRsop(rsopJson); if (organisationalUnit == null) { continue; } var site = GetSiteOfRsop(rsopJson); if (site == null) { continue; } var rsop = new Rsop { Domain = organisationalUnit.ADDomain, OrganizationalUnit = organisationalUnit, Site = site, AuditSettings = auditSettings.OrderBy(x => x.SubcategoryName).ToList(), Policies = policies.OrderBy(x => x.Name).ToList(), RegistrySettings = registrySettings.OrderBy(x => x.Name).ToList(), SecurityOptions = securityOptions.OrderBy(x => x.Description).ToList(), Gpos = allRsopGpos }; rsops.Add(rsop); } }
private static bool RsopAndRsopPotsOuEqual(Rsop rsop, Rsop currentRsop) { var organisationalUnitsEqual = currentRsop.OrganizationalUnit.Name.Equals(rsop.OrganizationalUnit.Name); return(organisationalUnitsEqual); }
public async Task <List <SecuritySettingsParsed> > ParseSecuritySettings(int refId, string type) { var rsop = new Rsop(); if (type.Equals("RSoPPot")) { var rsopPot = unitOfWork.RsopPotRepository.GetByID(refId); rsop = rsopPot.Rsops.FirstOrDefault(); } else { rsop = unitOfWork.RsopRepository.GetByID(refId); } var GPOs = await unitOfWork.GpoRepository.GetAllEntities(); var settings = new List <SecuritySettingsParsed>(); if (rsop != null) { foreach (var setting in rsop.AuditSettings) { var parsedSetting = SecuritySettingFactory(setting.SubcategoryName, setting.CurrentSettingValue.ToString(), setting.TargetSettingValue.ToString()); var gopId = setting.GpoIdentifier; ParseSecuritySetting(gopId, parsedSetting, GPOs); settings.Add(parsedSetting); } foreach (var setting in rsop.Policies) { var parsedSetting = SecuritySettingFactory(setting.Name, setting.CurrentState, setting.TargetState); var gopId = setting.GpoIdentifier; ParseSecuritySetting(gopId, parsedSetting, GPOs); settings.Add(parsedSetting); } foreach (var setting in rsop.RegistrySettings) { var parsedSetting = SecuritySettingFactory(setting.Name, setting.CurrentValue.Name, setting.TargetValue.Name); var gopId = setting.GpoIdentifier; ParseSecuritySetting(gopId, parsedSetting, GPOs); settings.Add(parsedSetting); } foreach (var setting in rsop.SecurityOptions) { var parsedSetting = SecuritySettingFactory(setting.Description, setting.CurrentDisplay.DisplayBoolean, setting.TargetDisplay.DisplayBoolean); var gopId = setting.GpoIdentifier; ParseSecuritySetting(gopId, parsedSetting, GPOs); settings.Add(parsedSetting); } } return(settings); }