internal override Condition ToInternalCondition() { ShortList <string> valueEntries = new ShortList <string>(); return(TransportRuleParser.Instance.CreatePredicate("attachmentIsUnsupported", null, valueEntries)); }
public override void ValidateArguments(ShortList <Argument> inputArguments) { }
public NoopAction(ShortList <Argument> arguments) : base(arguments) { }
// Token: 0x060014D4 RID: 5332 RVA: 0x00049F19 File Offset: 0x00048119 public SenderNotify(ShortList <Argument> arguments) : base(arguments) { }
public override PredicateCondition CreatePredicate(string name, Property property, ShortList <string> valueEntries, RulesCreationContext creationContext) { if (name != null) { if (!(name == "recipientIs")) { if (!(name == "allInternal")) { if (name == "is") { if (property == null || !string.Equals(property.Name, "Message.Sender.Department", StringComparison.OrdinalIgnoreCase)) { throw new ParserException(RulesStrings.InvalidPropertyName((property != null) ? property.Name : string.Empty)); } return(base.CreatePredicate(name, property, valueEntries, creationContext)); } } else { if (property == null || !string.Equals(property.Name, "Message.ToCcBcc", StringComparison.OrdinalIgnoreCase)) { throw new ParserException(RulesStrings.InvalidPropertyName((property != null) ? property.Name : string.Empty)); } return(new AllInternalPredicate()); } } else { if (property == null || !string.Equals(property.Name, "Message.ToCcBcc", StringComparison.OrdinalIgnoreCase)) { throw new ParserException(RulesStrings.InvalidPropertyName((property != null) ? property.Name : string.Empty)); } return(new RecipientIsPredicate(valueEntries, creationContext)); } } return(base.CreatePredicate(name, property, valueEntries, creationContext)); }
public void TestAdd() { ShortList list = new ShortList(); short[] testArray = { 0, 1, 2, 3, 5 }; for (int j = 0; j < testArray.Length; j++) { list.Add(testArray[j]); } for (int j = 0; j < testArray.Length; j++) { Assert.AreEqual(testArray[j], list.Get(j)); } Assert.AreEqual(testArray.Length, list.Count); // add at the beginning list.Add(0, (short)-1); Assert.AreEqual((short)-1, list.Get(0)); Assert.AreEqual(testArray.Length + 1, list.Count); for (int j = 0; j < testArray.Length; j++) { Assert.AreEqual(testArray[j], list.Get(j + 1)); } // add in the middle list.Add(5, (short)4); Assert.AreEqual((short)4, list.Get(5)); Assert.AreEqual(testArray.Length + 2, list.Count); for (int j = 0; j < list.Count; j++) { Assert.AreEqual((short)(j - 1), list.Get(j)); } // add at the end list.Add(list.Count, (short)6); Assert.AreEqual(testArray.Length + 3, list.Count); for (int j = 0; j < list.Count; j++) { Assert.AreEqual((short)(j - 1), list.Get(j)); } // add past end try { list.Add(list.Count + 1, (short)8); Assert.Fail("should have thrown exception"); } catch (IndexOutOfRangeException) { // as expected } // Test growth list = new ShortList(0); for (short j = 0; j < 1000; j++) { list.Add(j); } Assert.AreEqual(1000, list.Count); for (short j = 0; j < 1000; j++) { Assert.AreEqual(j, list.Get(j)); } list = new ShortList(0); for (short j = 0; j < 1000; j++) { list.Add(0, j); } Assert.AreEqual(1000, list.Count); for (short j = 0; j < 1000; j++) { Assert.AreEqual(j, list.Get(999 - j)); } }
public RightsProtectMessageAction(ShortList <Argument> arguments) : base(arguments) { }
// Token: 0x060014CC RID: 5324 RVA: 0x00049D19 File Offset: 0x00047F19 protected override Value BuildValue(ShortList <string> entries, RulesCreationContext creationContext) { return(null); }
// Token: 0x060014C4 RID: 5316 RVA: 0x00049C70 File Offset: 0x00047E70 public SentToPredicate(Property property, ShortList <string> addressesToCompare, RulesCreationContext creationContext) : base(property, addressesToCompare, creationContext) { }
protected override Value BuildValue(ShortList <string> entries, RulesCreationContext creationContext) { return(Value.CreateValue(entries.Select(new Func <string, IntRange>(IntRange.Parse)))); }
internal static TransportRuleAction CreateFromInternalActions(ShortList <Action> actions, ref int index) { return(SmtpAddressAction.CreateFromInternalActions <CopyToSmtpAction>(actions, ref index, "AddCcRecipientSmtpOnly")); }
protected override Value BuildValue(ShortList <string> entries, RulesCreationContext creationContext) { return(Value.CreateValue(entries.Select(new Func <string, Regex>(ClientAccessRulesUsernamePatternProperty.GetWildcardPatternRegex)))); }
internal static TransportRuleAction CreateFromInternalActions(ShortList <Action> actions, ref int index) { return(RecipientAction.CreateFromInternalActions <BlindCopyToAction>(actions, ref index, "AddEnvelopeRecipient")); }
public OwaIsSameUserPredicate(Property property, ShortList <string> entries, RulesCreationContext creationContext) : base(property, entries, creationContext) { }
// Token: 0x06001A1C RID: 6684 RVA: 0x0005E458 File Offset: 0x0005C658 protected override GetDlpPolicyTipsResponse InternalExecute() { PolicyTipRequestLogger policyTipRequestLogger = PolicyTipRequestLogger.CreateInstance(this.CorrelationId); policyTipRequestLogger.StartStage(LogStage.ReceiveRequest); Item item = null; GetDlpPolicyTipsResponse result; try { GetDlpPolicyTipsCommand.SetReceiveRequestLogData(policyTipRequestLogger, this.ItemId, this.NeedToReclassify, this.BodyOrSubjectChanged, this.Recipients, this.EventTrigger, this.CustomizedStringsNeeded, this.ClientSupportsScanResultData, this.ScanResultData); if (base.CallContext != null && base.CallContext.AccessingADUser != null && base.CallContext.AccessingADUser.OrganizationId != null) { this.OrganizationId = base.CallContext.AccessingADUser.OrganizationId; if (this.ItemId == null || string.IsNullOrEmpty(this.ItemId.GetId())) { GetDlpPolicyTipsResponse invalidStoreItemIdResponse = GetDlpPolicyTipsResponse.InvalidStoreItemIdResponse; this.TransitionToSendResponse(false, true, invalidStoreItemIdResponse, policyTipRequestLogger, true); result = invalidStoreItemIdResponse; } else if (this.ItemId.GetId().Equals(GetDlpPolicyTipsCommand.pingRequestItemId, StringComparison.OrdinalIgnoreCase)) { policyTipRequestLogger.AppendData("Ping", "1"); GetDlpPolicyTipsResponse responseToPingRequest = GetDlpPolicyTipsResponse.GetResponseToPingRequest(); this.TransitionToSendResponse(true, false, responseToPingRequest, policyTipRequestLogger, false); result = responseToPingRequest; } else if (!GetDlpPolicyTipsCommand.AddItemToCurrentPending(this.ItemId.GetId())) { policyTipRequestLogger.AppendData("ItemAlreadyBeingProcessed", "1"); GetDlpPolicyTipsResponse itemAlreadyBeingProcessedResponse = GetDlpPolicyTipsResponse.ItemAlreadyBeingProcessedResponse; this.TransitionToSendResponse(true, true, itemAlreadyBeingProcessedResponse, policyTipRequestLogger, false); result = itemAlreadyBeingProcessedResponse; } else { ShortList <string> recipients = GetDlpPolicyTipsCommand.ValidateAndGetEmailAddressStrings(this.Recipients, policyTipRequestLogger); IdAndSession idAndSession = null; try { idAndSession = base.IdConverter.ConvertItemIdToIdAndSessionReadOnly(this.ItemId); } catch (InvalidStoreIdException exception) { policyTipRequestLogger.SetException(exception); GetDlpPolicyTipsResponse invalidStoreItemIdResponse2 = GetDlpPolicyTipsResponse.InvalidStoreItemIdResponse; this.TransitionToSendResponse(false, true, invalidStoreItemIdResponse2, policyTipRequestLogger, true); return(invalidStoreItemIdResponse2); } catch (ObjectNotFoundException exception2) { policyTipRequestLogger.SetException(exception2); GetDlpPolicyTipsResponse invalidStoreItemIdResponse3 = GetDlpPolicyTipsResponse.InvalidStoreItemIdResponse; this.TransitionToSendResponse(false, true, invalidStoreItemIdResponse3, policyTipRequestLogger, true); return(invalidStoreItemIdResponse3); } catch (AccessDeniedException exception3) { policyTipRequestLogger.SetException(exception3); GetDlpPolicyTipsResponse accessDeniedStoreItemIdResponse = GetDlpPolicyTipsResponse.AccessDeniedStoreItemIdResponse; this.TransitionToSendResponse(false, true, accessDeniedStoreItemIdResponse, policyTipRequestLogger, true); return(accessDeniedStoreItemIdResponse); } policyTipRequestLogger.EndStageAndTransitionToStage(LogStage.LoadItem); List <DlpPolicyMatchDetail> list = null; bool flag = false; string empty = string.Empty; string empty2 = string.Empty; item = Item.Bind(idAndSession.Session, idAndSession.Id); ScanResultStorageProvider scanResultStorageProvider = null; if (this.ClientSupportsScanResultData) { try { scanResultStorageProvider = new ClientScanResultStorageProvider(this.ScanResultData, item); goto IL_274; } catch (ClientScanResultParseException exception4) { policyTipRequestLogger.SetException(exception4); GetDlpPolicyTipsResponse invalidClientScanResultResponse = GetDlpPolicyTipsResponse.InvalidClientScanResultResponse; this.TransitionToSendResponse(false, true, invalidClientScanResultResponse, policyTipRequestLogger, true); return(invalidClientScanResultResponse); } } item.OpenAsReadWrite(); scanResultStorageProvider = new StoreItemScanResultStorageProvider(item); IL_274: string empty3 = string.Empty; if (!GetDlpPolicyTipsCommand.IsSupportedStoreItemType(item, policyTipRequestLogger, out empty3)) { GetDlpPolicyTipsResponse getDlpPolicyTipsResponse = new GetDlpPolicyTipsResponse(EvaluationResult.PermanentError); getDlpPolicyTipsResponse.DiagnosticData = string.Format("{0}:{1}", "UnSupportedStoreItemType", empty3); this.TransitionToSendResponse(false, true, getDlpPolicyTipsResponse, policyTipRequestLogger, true); result = getDlpPolicyTipsResponse; } else { if (item != null) { policyTipRequestLogger.AppendData("Subject", PolicyTipRequestLogger.MarkAsPII(item.GetValueOrDefault <string>(InternalSchema.Subject, string.Empty))); } string fromAddress = GetDlpPolicyTipsCommand.GetFromAddress(idAndSession, item, policyTipRequestLogger); if (string.IsNullOrEmpty(fromAddress)) { policyTipRequestLogger.AppendData("NullFrom", "1"); GetDlpPolicyTipsResponse getDlpPolicyTipsResponse2 = new GetDlpPolicyTipsResponse(EvaluationResult.PermanentError); getDlpPolicyTipsResponse2.DiagnosticData = "NullFrom"; this.TransitionToSendResponse(false, true, getDlpPolicyTipsResponse2, policyTipRequestLogger, true); result = getDlpPolicyTipsResponse2; } else if (!GetDlpPolicyTipsCommand.HasContent(item, scanResultStorageProvider, policyTipRequestLogger)) { policyTipRequestLogger.AppendData("NoContent", "1"); GetDlpPolicyTipsResponse noContentResponse = GetDlpPolicyTipsResponse.NoContentResponse; this.TransitionToSendResponse(true, true, noContentResponse, policyTipRequestLogger, true); result = noContentResponse; } else { policyTipRequestLogger.EndStageAndTransitionToStage(LogStage.RefreshClassifications); policyTipRequestLogger.AppendData("BeforeRefreshClassifications", DiscoveredDataClassification.ToString(scanResultStorageProvider.GetDlpDetectedClassificationObjects())); if (this.NeedToReclassify) { scanResultStorageProvider.ResetAllClassifications(); } else { if (this.BodyOrSubjectChanged) { scanResultStorageProvider.RefreshBodyClassifications(); } scanResultStorageProvider.RefreshAttachmentClassifications(); } policyTipRequestLogger.AppendData("AfterRefreshClassifications", DiscoveredDataClassification.ToString(scanResultStorageProvider.GetDlpDetectedClassificationObjects())); policyTipRequestLogger.EndStageAndTransitionToStage(LogStage.LoadRules); policyTipRequestLogger.AppendData("OrganizationId", this.OrganizationId.ToString()); RuleCollection ruleCollection = GetDlpPolicyTipsCommand.LoadRules(this.OrganizationId); if (ruleCollection == null || ruleCollection.Count == 0) { policyTipRequestLogger.AppendData("RuleCount", "0"); GetDlpPolicyTipsResponse noRulesResponse = GetDlpPolicyTipsResponse.NoRulesResponse; this.TransitionToSendResponse(true, true, noRulesResponse, policyTipRequestLogger, true); result = noRulesResponse; } else { policyTipRequestLogger.AppendData("RuleCount", ruleCollection.Count.ToString()); policyTipRequestLogger.AppendData("RuleNames", GetDlpPolicyTipsCommand.GetRuleNamesForTracking(ruleCollection)); policyTipRequestLogger.EndStageAndTransitionToStage(LogStage.EvaluateRules); ExecutionStatus executionStatus = GetDlpPolicyTipsCommand.RunRules(ruleCollection, scanResultStorageProvider, item, fromAddress, recipients, out list, out flag, out empty, out empty2, policyTipRequestLogger); policyTipRequestLogger.AppendData("ExecutionStatus", executionStatus.ToString()); policyTipRequestLogger.AppendData("MatchResults", (list == null) ? string.Empty : DlpPolicyMatchDetail.ToString(list)); policyTipRequestLogger.AppendData("RuleEvalLatency", empty); policyTipRequestLogger.AppendData("RuleEvalResult", empty2); PolicyTipCustomizedStrings policyTipCustomizedStrings = null; if (this.CustomizedStringsNeeded) { policyTipRequestLogger.EndStageAndTransitionToStage(LogStage.LoadCustomStrings); UserContext userContext = UserContextManager.GetUserContext(base.CallContext.HttpContext, base.CallContext.EffectiveCaller, true); CultureInfo userCulture = userContext.UserCulture; policyTipRequestLogger.AppendData("CallersCulture", userCulture.Name); policyTipCustomizedStrings = ADUtils.GetPolicyTipStrings(this.OrganizationId, userCulture.Name); policyTipRequestLogger.AppendData("PolicyTipStrings", (policyTipCustomizedStrings == null) ? string.Empty : string.Format("Url:{0}/Notify:{1}/Override:{2}/Block:{3}", new object[] { policyTipCustomizedStrings.ComplianceURL ?? string.Empty, policyTipCustomizedStrings.PolicyTipMessageNotifyString ?? string.Empty, policyTipCustomizedStrings.PolicyTipMessageOverrideString ?? string.Empty, policyTipCustomizedStrings.PolicyTipMessageBlockString ?? string.Empty })); } GetDlpPolicyTipsResponse getDlpPolicyTipsResponse3 = new GetDlpPolicyTipsResponse(EvaluationResult.Success); if (this.ClientSupportsScanResultData) { getDlpPolicyTipsResponse3.ScanResultData = ((ClientScanResultStorageProvider)scanResultStorageProvider).GetScanResultData(); getDlpPolicyTipsResponse3.DetectedClassificationIds = ((ClientScanResultStorageProvider)scanResultStorageProvider).GetDetectedClassificationIds(); } else { item.Save(SaveMode.ResolveConflicts); } if (list != null) { getDlpPolicyTipsResponse3.Matches = list.ToArray(); } if (flag) { getDlpPolicyTipsResponse3.OptimizationResult = OptimizationResult.NoContentMatch; } if (this.CustomizedStringsNeeded) { getDlpPolicyTipsResponse3.CustomizedStrings = policyTipCustomizedStrings; } this.TransitionToSendResponse(true, false, getDlpPolicyTipsResponse3, policyTipRequestLogger, true); result = getDlpPolicyTipsResponse3; } } } } } else { GetDlpPolicyTipsResponse nullOrganizationResponse = GetDlpPolicyTipsResponse.NullOrganizationResponse; this.TransitionToSendResponse(false, true, nullOrganizationResponse, policyTipRequestLogger, true); result = nullOrganizationResponse; } } catch (Exception ex) { policyTipRequestLogger.SetException(ex); GetDlpPolicyTipsResponse getDlpPolicyTipsResponse4; if (!GetDlpPolicyTipsCommand.CheckIfKnownExceptionAndUpdatePerfCounters(ex)) { getDlpPolicyTipsResponse4 = new GetDlpPolicyTipsResponse(EvaluationResult.UnexpectedPermanentError); this.TransitionToSendResponse(false, false, getDlpPolicyTipsResponse4, policyTipRequestLogger, true); throw; } getDlpPolicyTipsResponse4 = new GetDlpPolicyTipsResponse(EvaluationResult.PermanentError); this.TransitionToSendResponse(false, false, getDlpPolicyTipsResponse4, policyTipRequestLogger, true); List <string> list2 = null; List <string> list3 = null; string text = null; PolicyTipProtocolLog.GetExceptionTypeAndDetails(ex, out list2, out list3, out text, false); getDlpPolicyTipsResponse4.DiagnosticData = string.Format("OuterExceptionType:{0}/OuterExceptionMessage:{1}/InnerExceptionType:{2}/InnerExceptionMessage:{3}/ExceptionChain:{4}.", new object[] { list2[0], list3[0], (list2.Count > 1) ? list2[list2.Count - 1] : string.Empty, (list2.Count > 1) ? list3[list3.Count - 1] : string.Empty, text }); result = getDlpPolicyTipsResponse4; } finally { if (item != null) { item.Dispose(); item = null; } } return(result); }
public ClientAccessRuleDenyAccessAction(ShortList <Argument> arguments) : base(arguments) { }
// Token: 0x06001A24 RID: 6692 RVA: 0x0005F09C File Offset: 0x0005D29C internal static ExecutionStatus RunRules(RuleCollection rules, ScanResultStorageProvider scanResultStorageProvider, Item storeItem, string fromAddress, ShortList <string> recipients, out List <DlpPolicyMatchDetail> dlpPolicyMatchDetails, out bool noContentMatch, out string ruleEvalLatency, out string ruleEvalResult, PolicyTipRequestLogger policyTipRequestLogger) { OwaRulesEvaluationContext owaRulesEvaluationContext = new OwaRulesEvaluationContext(rules, scanResultStorageProvider, storeItem, fromAddress, recipients, policyTipRequestLogger); OwaRulesEvaluator owaRulesEvaluator = new OwaRulesEvaluator(owaRulesEvaluationContext); owaRulesEvaluator.Run(); dlpPolicyMatchDetails = owaRulesEvaluationContext.DlpPolicyMatchDetails; noContentMatch = owaRulesEvaluationContext.NoContentMatch; ruleEvalLatency = owaRulesEvaluationContext.RuleEvalLatency; ruleEvalResult = owaRulesEvaluationContext.RuleEvalLResult; return(owaRulesEvaluationContext.ExecutionStatus); }
public void TestAddAll() { ShortList list = new ShortList(); for (short j = 0; j < 5; j++) { list.Add(j); } ShortList list2 = new ShortList(0); list2.AddAll(list); list2.AddAll(list); Assert.AreEqual(2 * list.Count, list2.Count); for (short j = 0; j < 5; j++) { Assert.AreEqual(list2.Get(j), j); Assert.AreEqual(list2.Get(j + list.Count), j); } ShortList empty = new ShortList(); int limit = list.Count; for (int j = 0; j < limit; j++) { Assert.IsTrue(list.AddAll(j, empty)); Assert.AreEqual(limit, list.Count); } try { list.AddAll(limit + 1, empty); Assert.Fail("should have thrown an exception"); } catch (IndexOutOfRangeException) { // as expected } // try add at beginning empty.AddAll(0, list); //Assert.AreEqual(empty, list); Assert.IsTrue(empty.Equals(list)); // try in the middle empty.AddAll(1, list); Assert.AreEqual(2 * list.Count, empty.Count); Assert.AreEqual(list.Get(0), empty.Get(0)); Assert.AreEqual(list.Get(0), empty.Get(1)); Assert.AreEqual(list.Get(1), empty.Get(2)); Assert.AreEqual(list.Get(1), empty.Get(6)); Assert.AreEqual(list.Get(2), empty.Get(3)); Assert.AreEqual(list.Get(2), empty.Get(7)); Assert.AreEqual(list.Get(3), empty.Get(4)); Assert.AreEqual(list.Get(3), empty.Get(8)); Assert.AreEqual(list.Get(4), empty.Get(5)); Assert.AreEqual(list.Get(4), empty.Get(9)); // try at the end empty.AddAll(empty.Count, list); Assert.AreEqual(3 * list.Count, empty.Count); Assert.AreEqual(list.Get(0), empty.Get(0)); Assert.AreEqual(list.Get(0), empty.Get(1)); Assert.AreEqual(list.Get(0), empty.Get(10)); Assert.AreEqual(list.Get(1), empty.Get(2)); Assert.AreEqual(list.Get(1), empty.Get(6)); Assert.AreEqual(list.Get(1), empty.Get(11)); Assert.AreEqual(list.Get(2), empty.Get(3)); Assert.AreEqual(list.Get(2), empty.Get(7)); Assert.AreEqual(list.Get(2), empty.Get(12)); Assert.AreEqual(list.Get(3), empty.Get(4)); Assert.AreEqual(list.Get(3), empty.Get(8)); Assert.AreEqual(list.Get(3), empty.Get(13)); Assert.AreEqual(list.Get(4), empty.Get(5)); Assert.AreEqual(list.Get(4), empty.Get(9)); Assert.AreEqual(list.Get(4), empty.Get(14)); }