Exemple #1
0
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            ExchangePrincipal principal = ExchangePrincipal.FromADUser(base.DataObject, RemotingOptions.AllowCrossSite);

            using (MailboxSession mailboxSession = StoreTasksHelper.OpenMailboxSession(principal, "Remove-PushNotificationSubscription"))
            {
                using (IPushNotificationStorage pushNotificationStorage = PushNotificationStorage.Find(mailboxSession))
                {
                    if (pushNotificationStorage != null)
                    {
                        if (this.SubscriptionStoreId != null)
                        {
                            pushNotificationStorage.DeleteSubscription(this.SubscriptionStoreId.StoreObjectIdValue);
                        }
                        else if (this.Force || base.ShouldContinue(Strings.ConfirmRemoveUserPushNotificationSubscriptions(this.Mailbox.ToString())))
                        {
                            if (base.ParameterSetName.Equals("RemoveStorage"))
                            {
                                PushNotificationStorage.DeleteStorage(mailboxSession);
                            }
                            else
                            {
                                pushNotificationStorage.DeleteAllSubscriptions();
                            }
                        }
                    }
                }
            }
            TaskLogger.LogExit();
        }
Exemple #2
0
        public PushNotificationSynchronizerTask(IPushNotificationStorage storage
                                                , IOptions <PushNotificationOptions> options)
        {
            _hubConnection = new HubConnectionBuilder().AddNewtonsoftJsonProtocol(jsonOptions =>
            {
                jsonOptions.PayloadSerializerSettings.TypeNameHandling = TypeNameHandling.Objects;
                jsonOptions.PayloadSerializerSettings.TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple;
            })
                             .WithAutomaticReconnect()
                             .WithUrl(options.Value.HubUrl)
                             .Build();

            _subscription = _hubConnection.On <PushNotification>("Send", OnSend);
            _storage      = storage;
        }
        public static IPushNotificationStorage Create(IMailboxSession mailboxSession, IXSOFactory xsoFactory, IOrganizationIdConvertor organizationIdConvertor)
        {
            ArgumentValidator.ThrowIfNull("mailboxSession", mailboxSession);
            ArgumentValidator.ThrowIfNull("xsoFactory", xsoFactory);
            IPushNotificationStorage pushNotificationStorage = PushNotificationStorage.Find(mailboxSession, xsoFactory);

            if (pushNotificationStorage != null)
            {
                return(pushNotificationStorage);
            }
            ArgumentValidator.ThrowIfNull("mailboxSession.MailboxOwner", mailboxSession.MailboxOwner);
            ArgumentValidator.ThrowIfNull("organizationIdConvertor", organizationIdConvertor);
            if (ExTraceGlobals.StorageNotificationSubscriptionTracer.IsTraceEnabled(TraceType.DebugTrace))
            {
                ExTraceGlobals.StorageNotificationSubscriptionTracer.TraceDebug <string>(0L, "PushNotificationStorage.Create: Creating a new Notification Subscription folder for user {0}.", (mailboxSession.MailboxOwner.ObjectId != null) ? mailboxSession.MailboxOwner.ObjectId.ToDNString() : string.Empty);
            }
            StoreObjectId folderId = mailboxSession.CreateDefaultFolder(DefaultFolderType.PushNotificationRoot);
            IFolder       folder   = xsoFactory.BindToFolder(mailboxSession, folderId);

            return(new PushNotificationStorage(folder, PushNotificationStorage.GetTenantId(mailboxSession), xsoFactory));
        }
        // Token: 0x060013D7 RID: 5079 RVA: 0x00073738 File Offset: 0x00071938
        private bool PopulateSubscriptionsAndTenantId(IMapiEvent mapiEvent, IMailboxSession session, PushNotificationContext pushNotificationContext)
        {
            PushNotificationContext pushNotificationContext2;

            if (this.NotificationBatchManager.TryGetPushNotification(mapiEvent.MailboxGuid, out pushNotificationContext2))
            {
                pushNotificationContext.Subscriptions = pushNotificationContext2.Subscriptions;
                pushNotificationContext.TenantId      = pushNotificationContext2.TenantId;
            }
            else
            {
                using (IPushNotificationStorage pushNotificationStorage = this.XSOFactory.FindPushNotificationStorage(session))
                {
                    if (pushNotificationStorage != null)
                    {
                        pushNotificationContext.TenantId      = pushNotificationStorage.TenantId;
                        pushNotificationContext.Subscriptions = this.ResolveSubscriptions(session, pushNotificationStorage);
                    }
                }
            }
            return(pushNotificationContext.Subscriptions != null && pushNotificationContext.Subscriptions.Count > 0);
        }
Exemple #5
0
 public PushNotificationManager(IPushNotificationStorage storage, IHubContext <PushNotificationHub> hubContext)
 {
     _hubContext = hubContext;
     _storage    = storage;
 }
 public ScalablePushNotificationManager(IPushNotificationStorage storage
                                        , IHubContext <PushNotificationHub> hubContext)
     : base(storage, hubContext)
 {
 }
        // Token: 0x060013D8 RID: 5080 RVA: 0x000737D4 File Offset: 0x000719D4
        private List <PushNotificationServerSubscription> ResolveSubscriptions(IMailboxSession session, IPushNotificationStorage storage)
        {
            List <PushNotificationServerSubscription> list = storage.GetActiveNotificationSubscriptions(session, this.AssistantConfig.SubscriptionExpirationInHours);

            if (list == null || list.Count == 0)
            {
                PushNotificationsAssistantPerfCounters.TotalSubscriptionsExpiredCleanup.Increment();
                PushNotificationsAssistantPerfCounters.CurrentActiveUserSubscriptions.Decrement();
                PushNotificationHelper.LogSubscriptionExpired(session.MailboxGuid);
                this.assistantCache.RemoveSubscriptions(session.MailboxGuid);
                this.MailboxTable.DisableSubscriptionOnMailboxTable(session);
                storage.DeleteExpiredSubscriptions(this.AssistantConfig.SubscriptionExpirationInHours);
                list = null;
            }
            else
            {
                list = list.Distinct(PushNotificationAssistantAdapter.SubscriptionComparer.Default).ToList <PushNotificationServerSubscription>();
                PushNotificationHelper.LogActiveSubscriptions(session.MailboxGuid, list);
                if (session.IsMailboxOof())
                {
                    List <PushNotificationServerSubscription> list2 = new List <PushNotificationServerSubscription>();
                    foreach (PushNotificationServerSubscription pushNotificationServerSubscription in list)
                    {
                        if ((pushNotificationServerSubscription.GetSubscriptionOption() & PushNotificationSubscriptionOption.SuppressNotificationsWhenOof) == PushNotificationSubscriptionOption.NoSubscription)
                        {
                            list2.Add(pushNotificationServerSubscription);
                        }
                        else
                        {
                            PushNotificationHelper.LogSuppressedNotifications(session.MailboxGuid, pushNotificationServerSubscription);
                        }
                    }
                    list = list2;
                }
            }
            return(list);
        }