internal static TransportRuleAction CreateFromInternalAction(Action action)
        {
            if (action.Name != "RouteMessageOutboundConnector")
            {
                return(null);
            }
            RouteMessageOutboundConnectorAction routeMessageOutboundConnectorAction = new RouteMessageOutboundConnectorAction();

            try
            {
                routeMessageOutboundConnectorAction.ConnectorName = TransportRuleAction.GetStringValue(action.Arguments[0]);
            }
            catch (ArgumentOutOfRangeException)
            {
                return(null);
            }
            return(routeMessageOutboundConnectorAction);
        }
        internal static TransportRuleAction CreateFromInternalAction(Action action)
        {
            if (action.Name != "RejectMessage" || !TransportRuleAction.GetStringValue(action.Arguments[1]).Equals(SmtpRejectMessageAction.EnhancedStatusCode))
            {
                return(null);
            }
            SmtpRejectMessageAction smtpRejectMessageAction = new SmtpRejectMessageAction();

            try
            {
                smtpRejectMessageAction.StatusCode   = new RejectStatusCode(TransportRuleAction.GetStringValue(action.Arguments[0]));
                smtpRejectMessageAction.RejectReason = new RejectText(TransportRuleAction.GetStringValue(action.Arguments[2]));
            }
            catch (ArgumentOutOfRangeException)
            {
                return(null);
            }
            return(smtpRejectMessageAction);
        }
Beispiel #3
0
        internal static TransportRuleAction CreateFromInternalAction(Action action)
        {
            if (action.Name != "SetHeader")
            {
                return(null);
            }
            SetHeaderAction setHeaderAction = new SetHeaderAction();

            try
            {
                setHeaderAction.MessageHeader = new HeaderName(TransportRuleAction.GetStringValue(action.Arguments[0]));
                setHeaderAction.HeaderValue   = new HeaderValue(TransportRuleAction.GetStringValue(action.Arguments[1]));
            }
            catch (ArgumentOutOfRangeException)
            {
                return(null);
            }
            return(setHeaderAction);
        }
        internal static TransportRuleAction CreateFromInternalAction(Action action)
        {
            if (action.Name != "AuditSeverityLevel")
            {
                return(null);
            }
            SetAuditSeverityAction setAuditSeverityAction = new SetAuditSeverityAction();
            TransportRuleAction    result;

            try
            {
                setAuditSeverityAction.SeverityLevel = TransportRuleAction.GetStringValue(action.Arguments[0]);
                result = setAuditSeverityAction;
            }
            catch (ArgumentOutOfRangeException)
            {
                result = null;
            }
            return(result);
        }
Beispiel #5
0
        internal static TransportRuleAction CreateFromInternalAction(Action action)
        {
            if (action.Name != "GenerateNotification" || !action.Arguments.Any <Argument>())
            {
                return(null);
            }
            TransportRuleAction result;

            try
            {
                result = new GenerateNotificationAction(new DisclaimerText(TransportRuleAction.GetStringValue(action.Arguments[0])));
            }
            catch (ArgumentOutOfRangeException)
            {
                result = null;
            }
            catch (ArgumentException)
            {
                result = null;
            }
            return(result);
        }
        internal static TransportRuleAction CreateFromInternalAction(Action action)
        {
            if (action.Name != "GenerateIncidentReport" || action.Arguments.Count == 0)
            {
                return(null);
            }
            GenerateIncidentReportAction generateIncidentReportAction = new GenerateIncidentReportAction();
            string stringValue = TransportRuleAction.GetStringValue(action.Arguments[0]);

            if (!SmtpAddress.IsValidSmtpAddress(stringValue))
            {
                return(null);
            }
            generateIncidentReportAction.ReportDestination = new SmtpAddress(stringValue);
            IncidentReportOriginalMail legacyReportOriginalMail;

            if (action.Arguments.Count == 2 && GenerateIncidentReport.TryGetIncidentReportOriginalMailParameter(TransportRuleAction.GetStringValue(action.Arguments[1]), out legacyReportOriginalMail))
            {
                generateIncidentReportAction.IncidentReportContent = GenerateIncidentReport.GetLegacyContentItems(legacyReportOriginalMail).ToArray();
            }
            else
            {
                for (int i = 1; i < action.Arguments.Count; i++)
                {
                    IncidentReportContent contentItem;
                    if (Enum.TryParse <IncidentReportContent>(TransportRuleAction.GetStringValue(action.Arguments[i]), out contentItem))
                    {
                        generateIncidentReportAction.AddIncidentReportContentItem(contentItem);
                    }
                }
                if (generateIncidentReportAction.IncidentReportContent.Length == 0)
                {
                    generateIncidentReportAction.AddIncidentReportContentItem(Microsoft.Exchange.MessagingPolicies.Rules.IncidentReportContent.RuleDetections);
                }
            }
            generateIncidentReportAction.IncidentReportOriginalMail = (generateIncidentReportAction.IncidentReportContent.Contains(Microsoft.Exchange.MessagingPolicies.Rules.IncidentReportContent.AttachOriginalMail) ? IncidentReportOriginalMail.IncludeOriginalMail : IncidentReportOriginalMail.DoNotIncludeOriginalMail);
            return(generateIncidentReportAction);
        }
Beispiel #7
0
        internal static TransportRuleAction CreateFromInternalActions <T>(ShortList <Action> actions, ref int index, string internalActionName) where T : SmtpAddressAction, new()
        {
            List <SmtpAddress> list = new List <SmtpAddress>();

            while (index < actions.Count && !(actions[index].Name != internalActionName))
            {
                SmtpAddress item = new SmtpAddress(TransportRuleAction.GetStringValue(actions[index].Arguments[0]));
                if (!item.IsValidAddress)
                {
                    break;
                }
                list.Add(item);
                index++;
            }
            if (list.Count == 0)
            {
                return(null);
            }
            T t = Activator.CreateInstance <T>();

            t.Addresses = list.ToArray();
            return(t);
        }
Beispiel #8
0
        internal static TransportRuleAction CreateFromInternalAction(Action action)
        {
            if (action.Name != "RejectMessage" || !TransportRuleAction.GetStringValue(action.Arguments[0]).Equals("550"))
            {
                return(null);
            }
            RejectMessageAction rejectMessageAction = new RejectMessageAction();

            try
            {
                rejectMessageAction.RejectReason       = new DsnText(TransportRuleAction.GetStringValue(action.Arguments[2]));
                rejectMessageAction.EnhancedStatusCode = new RejectEnhancedStatus(TransportRuleAction.GetStringValue(action.Arguments[1]));
            }
            catch (ArgumentOutOfRangeException)
            {
                return(null);
            }
            catch (ArgumentException)
            {
                return(null);
            }
            return(rejectMessageAction);
        }
Beispiel #9
0
        internal static TransportRuleAction CreateFromInternalAction(Action action)
        {
            if (action.Name != "ApplyHtmlDisclaimer")
            {
                return(null);
            }
            DisclaimerLocation       location;
            DisclaimerText           text2;
            DisclaimerFallbackAction disclaimerFallbackAction;

            try
            {
                string text = TransportRuleAction.GetStringValue(action.Arguments[0]);
                if (text.Equals("Inline", StringComparison.InvariantCultureIgnoreCase))
                {
                    text = "Append";
                }
                location = (DisclaimerLocation)Enum.Parse(typeof(DisclaimerLocation), text);
                text2    = new DisclaimerText(TransportRuleAction.GetStringValue(action.Arguments[1]));
                disclaimerFallbackAction = (DisclaimerFallbackAction)Enum.Parse(typeof(DisclaimerFallbackAction), TransportRuleAction.GetStringValue(action.Arguments[2]));
            }
            catch (ArgumentException)
            {
                return(null);
            }
            catch (OverflowException)
            {
                return(null);
            }
            return(new ApplyHtmlDisclaimerAction
            {
                Location = location,
                Text = text2,
                FallbackAction = disclaimerFallbackAction
            });
        }
Beispiel #10
0
        internal static TransportRuleAction CreateFromInternalAction(Action action)
        {
            if (action.Name != "SetHeader" || TransportRuleAction.GetStringValue(action.Arguments[0]) != "X-MS-Exchange-Organization-SCL")
            {
                return(null);
            }
            int input;

            if (!int.TryParse(TransportRuleAction.GetStringValue(action.Arguments[1]), out input))
            {
                return(null);
            }
            SetSclAction setSclAction = new SetSclAction();

            try
            {
                setSclAction.SclValue = new SclValue(input);
            }
            catch (ArgumentOutOfRangeException)
            {
                return(null);
            }
            return(setSclAction);
        }
        internal static TransportRuleAction CreateFromInternalAction(Action action)
        {
            if (action.Name != "SenderNotify" || !TransportRuleAction.GetStringValue(action.Arguments[1]).Equals("550"))
            {
                return(null);
            }
            NotifySenderAction notifySenderAction = new NotifySenderAction();

            try
            {
                notifySenderAction.SenderNotificationType = (NotifySenderType)Enum.Parse(typeof(NotifySenderType), TransportRuleAction.GetStringValue(action.Arguments[0]));
                notifySenderAction.EnhancedStatusCode     = new RejectEnhancedStatus(TransportRuleAction.GetStringValue(action.Arguments[2]));
                notifySenderAction.RejectReason           = new DsnText(TransportRuleAction.GetStringValue(action.Arguments[3]));
            }
            catch (ArgumentOutOfRangeException)
            {
                return(null);
            }
            catch (ArgumentException)
            {
                return(null);
            }
            catch (OverflowException)
            {
                return(null);
            }
            return(notifySenderAction);
        }
        internal static TransportRuleAction CreateFromInternalAction(Action action)
        {
            if (action.Name != "AddManagerAsRecipientType")
            {
                return(null);
            }
            AddedRecipientType recipientType;

            try
            {
                recipientType = (AddedRecipientType)Enum.Parse(typeof(AddedRecipientType), TransportRuleAction.GetStringValue(action.Arguments[0]));
            }
            catch (ArgumentException)
            {
                return(null);
            }
            catch (OverflowException)
            {
                return(null);
            }
            return(new AddManagerAsRecipientTypeAction
            {
                RecipientType = recipientType
            });
        }