// Token: 0x0600305A RID: 12378 RVA: 0x0011B290 File Offset: 0x00119490
        // Note: this type is marked as 'beforefieldinit'.
        static PolicyProvider()
        {
            PolicyProvider policyProvider = new PolicyProvider();

            policyProvider.PolicyType             = "DeletePolicy";
            policyProvider.GetPolicies            = ((MailboxSession mailboxSession) => mailboxSession.GetPolicyTagList(RetentionActionType.DeleteAndAllowRecovery));
            policyProvider.GetPolicyTagFromFolder = new PolicyProvider.GetPolicyTagFromFolderDelegate(PolicyTagHelper.GetPolicyTagForDeleteFromFolder);
            policyProvider.GetPolicyTagFromItem   = new PolicyProvider.GetPolicyTagFromItemDelegate(PolicyTagHelper.GetPolicyTagForDeleteFromItem);
            policyProvider.SetPolicyTagOnFolder   = new PolicyProvider.SetPolicyTagOnFolderDelegate(PolicyTagHelper.SetPolicyTagForDeleteOnFolder);
            policyProvider.SetPolicyTagOnItem     = new PolicyProvider.SetPolicyTagOnItemDelegate(PolicyTagHelper.SetPolicyTagForDeleteOnItem);
            policyProvider.ClearPolicyTagOnFolder = new PolicyProvider.ClearPolicyTagOnFolderDelegate(PolicyTagHelper.ClearPolicyTagForDeleteOnFolder);
            policyProvider.ClearPolicyTagOnItem   = new PolicyProvider.ClearPolicyTagOnItemDelegate(PolicyTagHelper.ClearPolicyTagForDeleteOnItem);
            policyProvider.PolicyProperties       = PolicyTagHelper.RetentionProperties;
            PolicyProvider.DeletePolicyProvider   = policyProvider;
            PolicyProvider policyProvider2 = new PolicyProvider();

            policyProvider2.PolicyType             = "MovePolicy";
            policyProvider2.GetPolicies            = ((MailboxSession mailboxSession) => mailboxSession.GetPolicyTagList(RetentionActionType.MoveToArchive));
            policyProvider2.GetPolicyTagFromFolder = new PolicyProvider.GetPolicyTagFromFolderDelegate(PolicyTagHelper.GetPolicyTagForArchiveFromFolder);
            policyProvider2.GetPolicyTagFromItem   = delegate(StoreObject item, out bool isExplicit, out DateTime? moveToArchive)
            {
                bool flag;
                return(PolicyTagHelper.GetPolicyTagForArchiveFromItem(item, out isExplicit, out flag, out moveToArchive));
            };
            policyProvider2.SetPolicyTagOnFolder   = new PolicyProvider.SetPolicyTagOnFolderDelegate(PolicyTagHelper.SetPolicyTagForArchiveOnFolder);
            policyProvider2.SetPolicyTagOnItem     = new PolicyProvider.SetPolicyTagOnItemDelegate(PolicyTagHelper.SetPolicyTagForArchiveOnItem);
            policyProvider2.ClearPolicyTagOnFolder = new PolicyProvider.ClearPolicyTagOnFolderDelegate(PolicyTagHelper.ClearPolicyTagForArchiveOnFolder);
            policyProvider2.ClearPolicyTagOnItem   = new PolicyProvider.ClearPolicyTagOnItemDelegate(PolicyTagHelper.ClearPolicyTagForArchiveOnItem);
            policyProvider2.PolicyProperties       = PolicyTagHelper.ArchiveProperties;
            PolicyProvider.MovePolicyProvider      = policyProvider2;
        }
 internal void Save(Notification notification)
 {
     this.CheckDisposed();
     using (Folder folder = Folder.Bind(this.mailboxSession, this.GetNotificationsFolderId(notification.EventSource, true)))
     {
         using (MessageItem messageItem = MessageItem.Create(this.mailboxSession, folder.Id))
         {
             messageItem[TenantNotificationMessageSchema.MonitoringUniqueId]                      = notification.Identity.GetBytes();
             messageItem[TenantNotificationMessageSchema.MonitoringEventInstanceId]               = notification.EventInstanceId;
             messageItem[TenantNotificationMessageSchema.MonitoringEventSource]                   = notification.EventSource;
             messageItem[TenantNotificationMessageSchema.MonitoringEventCategoryId]               = notification.EventCategoryId;
             messageItem[TenantNotificationMessageSchema.MonitoringEventTimeUtc]                  = notification.EventTimeUtc;
             messageItem[TenantNotificationMessageSchema.MonitoringEventEntryType]                = notification.EntryType;
             messageItem[TenantNotificationMessageSchema.MonitoringInsertionStrings]              = notification.InsertionStrings.ToArray <string>();
             messageItem[TenantNotificationMessageSchema.MonitoringNotificationEmailSent]         = notification.EmailSent;
             messageItem[TenantNotificationMessageSchema.MonitoringCreationTimeUtc]               = notification.CreationTimeUtc;
             messageItem[TenantNotificationMessageSchema.MonitoringNotificationRecipients]        = notification.NotificationRecipients.ToArray();
             messageItem[TenantNotificationMessageSchema.MonitoringHashCodeForDuplicateDetection] = notification.ComputeHashCodeForDuplicateDetection();
             messageItem[TenantNotificationMessageSchema.MonitoringNotificationMessageIds]        = notification.NotificationMessageIds.ToArray();
             messageItem[TenantNotificationMessageSchema.MonitoringEventPeriodicKey]              = notification.PeriodicKey;
             messageItem[ItemSchema.Subject] = string.Format(CultureInfo.InvariantCulture, "creation-time:{0}; event-source:{1}; event-category-id:{2}; event-id:{3}; email-sent:{4}; periodic-key:{5};", new object[]
             {
                 notification.CreationTimeUtc,
                 notification.EventSource,
                 notification.EventCategoryId,
                 notification.EventInstanceId,
                 notification.EmailSent,
                 notification.PeriodicKey
             });
             PolicyTagHelper.SetRetentionProperties(messageItem, ExDateTime.UtcNow.AddDays(14.0), 14);
             messageItem.Save(SaveMode.NoConflictResolution);
         }
     }
     if (notification.EmailSent)
     {
         using (Folder folder2 = Folder.Bind(this.mailboxSession, this.GetTenantNotificationsFolderId(), NotificationDataProvider.NotificationDataStore.FolderColumns))
         {
             long valueOrDefault = folder2.GetValueOrDefault <long>(TenantNotificationMessageSchema.MonitoringCountOfNotificationsSentInPast24Hours, 0L);
             folder2[TenantNotificationMessageSchema.MonitoringCountOfNotificationsSentInPast24Hours] = NotificationDataProvider.NotificationDataStore.NotificationCountPropertyHelper.IncrementCount(valueOrDefault, notification.CreationTimeUtc);
             folder2.Save(SaveMode.NoConflictResolution);
         }
     }
 }
Ejemplo n.º 3
0
        public override void Process(StoreDriverDeliveryEventArgsImpl argsImpl, Action action, int traceId)
        {
            AbstractActionProcessor.Tracer.TraceDebug((long)traceId, "WorkingSetAgent.AddExchangeItemProcessor.Process: entering");
            MailboxSession mailboxSession                    = argsImpl.MailboxSession;
            string         workingSetSourcePartition         = WorkingSetUtils.GetWorkingSetSourcePartition(action.Item);
            string         workingSetSourcePartitionInternal = WorkingSetUtils.GetWorkingSetSourcePartitionInternal(action.Item);
            StoreObjectId  workingSetPartitionFolderId       = WorkingSetUtils.GetWorkingSetPartitionFolderId(mailboxSession, workingSetSourcePartition, workingSetSourcePartitionInternal);

            using (Item item = ((ExchangeItem)action.Item).Item)
            {
                using (MessageItem messageItem = MessageItem.Create(mailboxSession, workingSetPartitionFolderId))
                {
                    messageItem.ClassName = item.ClassName;
                    Body.CopyBody(item.Body, messageItem.Body, CultureInfo.InvariantCulture, false, false);
                    Item.CopyItemContent(item, messageItem);
                    if (workingSetSourcePartition != null)
                    {
                        messageItem.WorkingSetSourcePartition = workingSetSourcePartition;
                    }
                    WorkingSetSource sourceSystemCode = (WorkingSetSource)action.Item.SourceSystemCode;
                    WorkingSetFlags  workingSetFlags  = WorkingSetUtils.GetWorkingSetFlags(sourceSystemCode);
                    messageItem.WorkingSetId     = action.Item.Identifier;
                    messageItem.WorkingSetSource = sourceSystemCode;
                    messageItem.WorkingSetFlags  = workingSetFlags;
                    PolicyTagHelper.SetRetentionProperties(messageItem, ExDateTime.UtcNow.AddDays(30.0), 30);
                    messageItem.AutoResponseSuppress = AutoResponseSuppress.All;
                    messageItem.Save(SaveMode.NoConflictResolutionForceSave);
                    AbstractActionProcessor.Tracer.TraceDebug((long)traceId, "WorkingSetAgent.AddExchangeItemProcessor.Process: workingSetSource - {0}, workingSetFlags - {1}, workingSetSoucePartition - {2}, folder - {3}", new object[]
                    {
                        sourceSystemCode,
                        workingSetFlags,
                        workingSetSourcePartition,
                        workingSetPartitionFolderId
                    });
                }
            }
            WorkingSet.AddExchangeItem.Increment();
            WorkingSet.AddItem.Increment();
            argsImpl.MailRecipient.DsnRequested = DsnRequestedFlags.Never;
            throw new SmtpResponseException(AddExchangeItemProcessor.processedAddExchangeItemSignalMailResponse, this.actionProcessorFactory.WorkingSetAgent.Name);
        }
Ejemplo n.º 4
0
        private bool TryParkThisMessage(StoreDriverDeliveryEventArgsImpl args, MeetingSeriesMessageOrderingAgent.SeriesHeadersData headersData)
        {
            Guid networkMessageId = args.MailItemDeliver.MbxTransportMailItem.NetworkMessageId;

            this.AddUnparkedHeader(args.MailItem.Message.MimeDocument.RootPart.Headers, networkMessageId);
            bool   encapsulationSucceeded = true;
            string text;
            bool   encapsulationSucceeded2;

            using (EmailMessage emailMessage = ModerationHelper.EncapsulateOriginalMessage(args.MailItemDeliver.MbxTransportMailItem, new List <MailRecipient>
            {
                args.MailRecipient
            }, args.MailRecipient.Email.ToString(), args.MailRecipient.Email.ToString(), MeetingSeriesMessageOrderingAgent.tracer, delegate(Exception param0)
            {
                encapsulationSucceeded = false;
            }, out text))
            {
                if (encapsulationSucceeded)
                {
                    MailboxSession mailboxSession = args.MailboxSession;
                    using (ParkedMeetingMessage parkedMeetingMessage = ParkedMeetingMessage.Create(mailboxSession))
                    {
                        if (parkedMeetingMessage != null)
                        {
                            string internetMessageId = args.MailItemDeliver.MbxTransportMailItem.InternetMessageId;
                            ItemConversion.ConvertAnyMimeToItem(parkedMeetingMessage, emailMessage.MimeDocument, new InboundConversionOptions(args.ADRecipientCache));
                            parkedMeetingMessage.ParkedCorrelationId          = ParkedMeetingMessage.GetCorrelationId(headersData.SeriesId, headersData.SeriesSequenceNumber);
                            parkedMeetingMessage[StoreObjectSchema.ItemClass] = "IPM.Parked.MeetingMessage";
                            parkedMeetingMessage.CleanGlobalObjectId          = headersData.InstanceGoid;
                            parkedMeetingMessage.OriginalMessageId            = internetMessageId;
                            int retentionPeriod = MeetingSeriesMessageOrderingAgent.GetRetentionPeriod(args.MailboxOwner);
                            PolicyTagHelper.SetRetentionProperties(parkedMeetingMessage, ExDateTime.UtcNow.AddDays((double)retentionPeriod), retentionPeriod);
                            parkedMeetingMessage.Save(SaveMode.NoConflictResolution);
                        }
                    }
                }
                encapsulationSucceeded2 = encapsulationSucceeded;
            }
            return(encapsulationSucceeded2);
        }