private ActiveSyncDeviceFilterArray RemoveDeviceFilterRuleFromExisting(ActiveSyncDeviceFilterArray existingDeviceFilterArray, string deviceFilterName, string deviceFilterRuleName, DeviceAccessCharacteristic deviceFilterCharacteristic) { ActiveSyncDeviceFilterArray activeSyncDeviceFilterArray = new ActiveSyncDeviceFilterArray(); if (existingDeviceFilterArray == null || existingDeviceFilterArray.DeviceFilters == null) { base.WriteVerbose(new LocalizedString("There are no device filters to remove")); return(existingDeviceFilterArray); } activeSyncDeviceFilterArray.DeviceFilters = existingDeviceFilterArray.DeviceFilters; ActiveSyncDeviceFilter activeSyncDeviceFilter = activeSyncDeviceFilterArray.DeviceFilters.FirstOrDefault((ActiveSyncDeviceFilter existingDeviceFilter) => existingDeviceFilter.Name.Equals(deviceFilterName, StringComparison.InvariantCultureIgnoreCase)); if (activeSyncDeviceFilter == null || activeSyncDeviceFilter.Rules == null) { base.WriteError(new ArgumentException(Strings.NoDeviceFilterRuleByName(deviceFilterName)), ErrorCategory.InvalidArgument, null); } List <ActiveSyncDeviceFilterRule> rules = activeSyncDeviceFilter.Rules; int num = rules.FindIndex((ActiveSyncDeviceFilterRule rule) => rule.Characteristic == deviceFilterCharacteristic && rule.Name.Equals(deviceFilterRuleName, StringComparison.InvariantCultureIgnoreCase)); if (num >= 0) { rules.RemoveAt(num); base.WriteVerbose(Strings.RemovedDeviceFilterRuleByNameAndCharacteristic(deviceFilterName, deviceFilterRuleName, deviceFilterCharacteristic.ToString())); } else { base.WriteVerbose(Strings.NoDeviceFilterRuleByNameAndCharacteristic(deviceFilterName, deviceFilterRuleName, deviceFilterCharacteristic.ToString())); } if (activeSyncDeviceFilter.Rules.Count == 0) { base.WriteVerbose(Strings.EmptyDeviceFilterRemoved(deviceFilterName)); activeSyncDeviceFilterArray.DeviceFilters.Remove(activeSyncDeviceFilter); } return(activeSyncDeviceFilterArray); }
// Token: 0x060005B9 RID: 1465 RVA: 0x00021F98 File Offset: 0x00020198 public static bool IsDeviceInFilter(string filterName) { if (Command.CurrentCommand != null && Command.CurrentCommand.Context != null) { IOrganizationSettingsData organizationSettingsData = ADNotificationManager.GetOrganizationSettingsData(Command.CurrentCommand.Context.User); if (organizationSettingsData == null || organizationSettingsData.DeviceFiltering == null || organizationSettingsData.DeviceFiltering.Count == 0) { AirSyncDiagnostics.TraceDebug(ExTraceGlobals.RequestsTracer, null, "There are no device filters or failed to get device filters"); return(false); } ActiveSyncDeviceFilter filter = organizationSettingsData.DeviceFiltering.GetFilter(filterName); if (filter == null) { AirSyncDiagnostics.TraceDebug <string>(ExTraceGlobals.RequestsTracer, null, "There are no device filters by given name:{0}", filterName); return(false); } if (filter.ApplyForAllDevices) { AirSyncDiagnostics.TraceDebug <string>(ExTraceGlobals.RequestsTracer, null, "Device filter name:{0} has been set to apply for all devices", filterName); return(true); } if (filter.Rules == null) { AirSyncDiagnostics.TraceDebug <string>(ExTraceGlobals.RequestsTracer, null, "There are no rules for the given device filters name:{0}", filterName); return(false); } string text; string text2; string text3; string text4; string text5; DeviceFilterManager.GetActualValues(out text, out text2, out text3, out text4, out text5); foreach (ActiveSyncDeviceFilterRule activeSyncDeviceFilterRule in filter.Rules) { if ((activeSyncDeviceFilterRule.Characteristic == DeviceAccessCharacteristic.DeviceType && DeviceFilterManager.IsRuleValueMatch(activeSyncDeviceFilterRule, text)) || (activeSyncDeviceFilterRule.Characteristic == DeviceAccessCharacteristic.DeviceModel && DeviceFilterManager.IsRuleValueMatch(activeSyncDeviceFilterRule, text2)) || (activeSyncDeviceFilterRule.Characteristic == DeviceAccessCharacteristic.DeviceOS && DeviceFilterManager.IsRuleValueMatch(activeSyncDeviceFilterRule, text3)) || (activeSyncDeviceFilterRule.Characteristic == DeviceAccessCharacteristic.UserAgent && DeviceFilterManager.IsRuleValueMatch(activeSyncDeviceFilterRule, text4)) || (activeSyncDeviceFilterRule.Characteristic == DeviceAccessCharacteristic.XMSWLHeader && DeviceFilterManager.IsRuleValueMatch(activeSyncDeviceFilterRule, text5))) { AirSyncDiagnostics.TraceDebug(ExTraceGlobals.RequestsTracer, null, "The current request with DeviceType:{0} DeviceModel:{1} DeviceOS:{2} UserAgent:{3} XMSWLHeader:{4} has a matching filter:{5}", new object[] { text, text2, text3, text4, text5, filterName }); return(true); } } return(false); } return(false); }
private ActiveSyncDeviceFilterArray AddDeviceFilterRuleToExisting(ActiveSyncDeviceFilterArray existingDeviceFilterArray, string deviceFilterName, ActiveSyncDeviceFilterRule newRule, bool applyFilterForAllDevices) { ActiveSyncDeviceFilterArray activeSyncDeviceFilterArray = new ActiveSyncDeviceFilterArray(); if (existingDeviceFilterArray != null) { activeSyncDeviceFilterArray.DeviceFilters = existingDeviceFilterArray.DeviceFilters; } List <ActiveSyncDeviceFilter> list = activeSyncDeviceFilterArray.DeviceFilters; if (list == null) { list = new List <ActiveSyncDeviceFilter>(); activeSyncDeviceFilterArray.DeviceFilters = list; } ActiveSyncDeviceFilter activeSyncDeviceFilter = list.FirstOrDefault((ActiveSyncDeviceFilter existingDeviceFilter) => existingDeviceFilter.Name.Equals(deviceFilterName, StringComparison.InvariantCultureIgnoreCase)); if (activeSyncDeviceFilter == null) { activeSyncDeviceFilter = new ActiveSyncDeviceFilter(deviceFilterName, new List <ActiveSyncDeviceFilterRule>()); list.Add(activeSyncDeviceFilter); } if (applyFilterForAllDevices) { activeSyncDeviceFilter.ApplyForAllDevices = applyFilterForAllDevices; base.WriteVerbose(Strings.AddedDeviceFilterRule(deviceFilterName)); return(activeSyncDeviceFilterArray); } if (activeSyncDeviceFilter.ApplyForAllDevices) { base.WriteError(new InvalidOperationException(Strings.CantAddDeviceFilterRuleSinceApplyForAllDevicesSetToTrue(deviceFilterName)), ErrorCategory.InvalidOperation, null); } List <ActiveSyncDeviceFilterRule> rules = activeSyncDeviceFilter.Rules; if (!rules.Any((ActiveSyncDeviceFilterRule rule) => rule.Characteristic == newRule.Characteristic && rule.Name.Equals(newRule.Name, StringComparison.InvariantCultureIgnoreCase))) { rules.Add(newRule); base.WriteVerbose(Strings.AddedDeviceFilterRule(deviceFilterName)); } else { base.WriteError(new ArgumentException(Strings.DeviceFilterRuleAlreadyExists(deviceFilterName)), ErrorCategory.InvalidArgument, null); } return(activeSyncDeviceFilterArray); }