コード例 #1
0
        protected override void SaveObjectToStore(AuditLogSearchBase searchBase)
        {
            AdminAuditLogSearch adminAuditLogSearch = (AdminAuditLogSearch)searchBase;

            using (AdminAuditLogSearchItem adminAuditLogSearchItem = new AdminAuditLogSearchItem(base.MailboxSession, base.Folder))
            {
                Guid guid = ((AuditLogSearchId)adminAuditLogSearch.Identity).Guid;
                adminAuditLogSearchItem.Identity               = guid;
                adminAuditLogSearchItem.Name                   = adminAuditLogSearch.Name;
                adminAuditLogSearchItem.StartDate              = new ExDateTime(ExTimeZone.UtcTimeZone, adminAuditLogSearch.StartDateUtc.Value);
                adminAuditLogSearchItem.EndDate                = new ExDateTime(ExTimeZone.UtcTimeZone, adminAuditLogSearch.EndDateUtc.Value);
                adminAuditLogSearchItem.StatusMailRecipients   = adminAuditLogSearch.StatusMailRecipients;
                adminAuditLogSearchItem.CreatedBy              = adminAuditLogSearch.CreatedBy;
                adminAuditLogSearchItem.CreatedByEx            = adminAuditLogSearch.CreatedByEx;
                adminAuditLogSearchItem.Cmdlets                = adminAuditLogSearch.Cmdlets;
                adminAuditLogSearchItem.Parameters             = adminAuditLogSearch.Parameters;
                adminAuditLogSearchItem.ObjectIds              = adminAuditLogSearch.ObjectIds;
                adminAuditLogSearchItem.ExternalAccess         = adminAuditLogSearch.ExternalAccess;
                adminAuditLogSearchItem.RawUserIds             = adminAuditLogSearch.UserIds;
                adminAuditLogSearchItem.ResolvedUsers          = adminAuditLogSearch.ResolvedUsers;
                adminAuditLogSearchItem.RedactDatacenterAdmins = adminAuditLogSearch.RedactDatacenterAdmins;
                adminAuditLogSearchItem.Save(SaveMode.ResolveConflicts);
                AuditQueuesOpticsLogData auditQueuesOpticsLogData = new AuditQueuesOpticsLogData
                {
                    QueueType      = AuditQueueType.AsyncAdminSearch,
                    EventType      = QueueEventType.Queue,
                    CorrelationId  = guid.ToString(),
                    OrganizationId = base.MailboxSession.OrganizationId,
                    QueueLength    = base.Folder.ItemCount + 1
                };
                auditQueuesOpticsLogData.Log();
            }
        }
コード例 #2
0
 public static void SetResolveUsers(AdminAuditLogSearch searchObject, DataAccessHelper.GetDataObjectDelegate getDataObject, Task.TaskVerboseLoggingDelegate writeVerbose, Task.TaskWarningLoggingDelegate writeWarning)
 {
     if (searchObject.UserIdsUserInput != null && searchObject.UserIdsUserInput.Count > 0)
     {
         writeVerbose(Strings.VerboseStartResolvingUsers);
         ADObjectId        rootOrgContainerIdForLocalForest = ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest();
         ADSessionSettings sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(rootOrgContainerIdForLocalForest, searchObject.OrganizationId, null, false);
         IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(true, ConsistencyMode.PartiallyConsistent, sessionSettings, 515, "SetResolveUsers", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\AdminAuditLog\\AdminAuditLogHelper.cs");
         tenantOrRootOrgRecipientSession.UseConfigNC = false;
         searchObject.UserIds       = new MultiValuedProperty <string>();
         searchObject.ResolvedUsers = new MultiValuedProperty <string>();
         foreach (SecurityPrincipalIdParameter securityPrincipalIdParameter in searchObject.UserIdsUserInput)
         {
             searchObject.UserIds.Add(securityPrincipalIdParameter.RawIdentity);
             bool flag = false;
             try
             {
                 ADRecipient adrecipient = (ADRecipient)getDataObject(securityPrincipalIdParameter, tenantOrRootOrgRecipientSession, null, null, new LocalizedString?(Strings.WarningSearchUserNotFound(securityPrincipalIdParameter.ToString())), new LocalizedString?(Strings.ErrorSearchUserNotUnique(securityPrincipalIdParameter.ToString())));
                 if (adrecipient.Id != null && adrecipient.Id.DomainId != null && !string.IsNullOrEmpty(adrecipient.Id.DomainId.Name))
                 {
                     string text = (string)adrecipient.propertyBag[IADSecurityPrincipalSchema.SamAccountName];
                     if (!string.IsNullOrEmpty(text))
                     {
                         searchObject.ResolvedUsers.Add(adrecipient.Id.DomainId.Name + "\\" + text);
                         flag = true;
                         writeVerbose(Strings.DebugResolvingDomainAccount(securityPrincipalIdParameter.ToString(), adrecipient.Id.DomainId.Name, text));
                     }
                 }
                 if (adrecipient.propertyBag[IADSecurityPrincipalSchema.Sid] != null)
                 {
                     string value = ((SecurityIdentifier)adrecipient.propertyBag[IADSecurityPrincipalSchema.Sid]).Value;
                     if (!string.IsNullOrEmpty(value))
                     {
                         searchObject.ResolvedUsers.Add(value);
                         flag = true;
                         writeVerbose(Strings.DebugResolvingUserSid(securityPrincipalIdParameter.ToString(), value));
                     }
                 }
                 if (adrecipient.Id != null && !string.IsNullOrEmpty(adrecipient.Id.ToString()))
                 {
                     searchObject.ResolvedUsers.Add(adrecipient.Id.ToString());
                     flag = true;
                     writeVerbose(Strings.DebugResolvingUserCN(securityPrincipalIdParameter.ToString(), adrecipient.Id.ToString()));
                 }
                 if (!flag)
                 {
                     writeWarning(Strings.WarningCannotResolveUser(securityPrincipalIdParameter.ToString()));
                     searchObject.ResolvedUsers.Add(securityPrincipalIdParameter.ToString());
                 }
             }
             catch (ManagementObjectNotFoundException)
             {
                 writeWarning(Strings.WarningSearchUserNotFound(securityPrincipalIdParameter.ToString()));
                 searchObject.ResolvedUsers.Add(securityPrincipalIdParameter.ToString());
             }
         }
     }
 }
コード例 #3
0
 public AdminAuditLogSearchWorker(int searchTimeoutSeconds, AdminAuditLogSearch searchObject, AuditLogOpticsLogData searchStatistics)
 {
     if (searchTimeoutSeconds <= 0)
     {
         throw new ArgumentOutOfRangeException("searchTimeoutSeconds");
     }
     this.searchTimeoutSeconds = searchTimeoutSeconds;
     this.searchCriteria       = searchObject;
     this.searchStatistics     = searchStatistics;
 }
コード例 #4
0
        internal override void Initialize(AuditLogSearchBase item)
        {
            AdminAuditLogSearch adminAuditLogSearch = (AdminAuditLogSearch)item;

            base.Initialize(item);
            this.Cmdlets                = adminAuditLogSearch.Cmdlets;
            this.Parameters             = adminAuditLogSearch.Parameters;
            this.ObjectIds              = adminAuditLogSearch.ObjectIds;
            this.UserIds                = adminAuditLogSearch.UserIds;
            this.ResolvedUsers          = adminAuditLogSearch.ResolvedUsers;
            this.RedactDatacenterAdmins = adminAuditLogSearch.RedactDatacenterAdmins;
            this.Succeeded              = null;
            this.StartIndex             = 0;
            this.ResultSize             = 50000;
        }
コード例 #5
0
            public override IConfigurable Read <T>(ObjectId identity)
            {
                AuditLogSearchId auditLogSearchId = identity as AuditLogSearchId;

                if (auditLogSearchId != null)
                {
                    SearchFilter filter = new SearchFilter.IsEqualTo(AuditLogSearchBaseEwsSchema.Identity.StorePropertyDefinition, auditLogSearchId.Guid.ToString());
                    using (IEnumerator <AdminAuditLogSearch> enumerator = this.FindInFolder <AdminAuditLogSearch>(filter, this.GetDefaultFolder()).GetEnumerator())
                    {
                        if (enumerator.MoveNext())
                        {
                            AdminAuditLogSearch adminAuditLogSearch  = enumerator.Current;
                            AdminAuditLogSearch adminAuditLogSearch2 = new AdminAuditLogSearch();
                            adminAuditLogSearch2.SetId(adminAuditLogSearch.Identity);
                            adminAuditLogSearch2.Name                 = adminAuditLogSearch.Name;
                            adminAuditLogSearch2.StartDateUtc         = new DateTime?(adminAuditLogSearch.StartDateUtc.Value);
                            adminAuditLogSearch2.EndDateUtc           = new DateTime?(adminAuditLogSearch.EndDateUtc.Value);
                            adminAuditLogSearch2.StatusMailRecipients = NewAuditLogSearchBase <AdminAuditLogSearch> .GetMultiValuedStringsAsSmptAddresses(adminAuditLogSearch.StatusMailRecipients);

                            adminAuditLogSearch2.CreatedBy   = adminAuditLogSearch.CreatedBy;
                            adminAuditLogSearch2.CreatedByEx = adminAuditLogSearch.CreatedByEx;
                            adminAuditLogSearch2.Cmdlets     = adminAuditLogSearch.Cmdlets;
                            adminAuditLogSearch2.Parameters  = adminAuditLogSearch.Parameters;
                            adminAuditLogSearch2.ObjectIds   = adminAuditLogSearch.ObjectIds;
                            bool value;
                            if (!string.IsNullOrEmpty(adminAuditLogSearch.ExternalAccess) && bool.TryParse(adminAuditLogSearch.ExternalAccess, out value))
                            {
                                adminAuditLogSearch2.ExternalAccess = new bool?(value);
                            }
                            adminAuditLogSearch2.UserIds       = adminAuditLogSearch.UserIds;
                            adminAuditLogSearch2.ResolvedUsers = adminAuditLogSearch.ResolvedUsers;
                            return(adminAuditLogSearch2);
                        }
                    }
                }
                return(null);
            }
コード例 #6
0
            public override void Save(IConfigurable instance)
            {
                AdminAuditLogSearch adminAuditLogSearch  = (AdminAuditLogSearch)instance;
                AdminAuditLogSearch adminAuditLogSearch2 = new AdminAuditLogSearch();

                adminAuditLogSearch2.Identity             = (AuditLogSearchId)adminAuditLogSearch.Identity;
                adminAuditLogSearch2.Name                 = adminAuditLogSearch.Name;
                adminAuditLogSearch2.StartDateUtc         = new DateTime?(adminAuditLogSearch.StartDateUtc.Value);
                adminAuditLogSearch2.EndDateUtc           = new DateTime?(adminAuditLogSearch.EndDateUtc.Value);
                adminAuditLogSearch2.StatusMailRecipients = NewAuditLogSearchBase <AdminAuditLogSearch> .GetMultiValuedSmptAddressAsStrings(adminAuditLogSearch.StatusMailRecipients);

                adminAuditLogSearch2.CreatedBy   = adminAuditLogSearch.CreatedBy;
                adminAuditLogSearch2.CreatedByEx = adminAuditLogSearch.CreatedByEx;
                adminAuditLogSearch2.Cmdlets     = adminAuditLogSearch.Cmdlets;
                adminAuditLogSearch2.Parameters  = adminAuditLogSearch.Parameters;
                adminAuditLogSearch2.ObjectIds   = adminAuditLogSearch.ObjectIds;
                if (adminAuditLogSearch.ExternalAccess != null)
                {
                    adminAuditLogSearch2.ExternalAccess = (adminAuditLogSearch.ExternalAccess.Value ? bool.TrueString : bool.FalseString);
                }
                adminAuditLogSearch2.UserIds                = adminAuditLogSearch.UserIds;
                adminAuditLogSearch2.ResolvedUsers          = adminAuditLogSearch.ResolvedUsers;
                adminAuditLogSearch2.RedactDatacenterAdmins = adminAuditLogSearch.RedactDatacenterAdmins;
                base.Save(adminAuditLogSearch2);
                AuditQueuesOpticsLogData auditQueuesOpticsLogData = new AuditQueuesOpticsLogData
                {
                    QueueType      = AuditQueueType.AsyncAdminSearch,
                    EventType      = QueueEventType.Queue,
                    CorrelationId  = adminAuditLogSearch2.Identity.Guid.ToString(),
                    OrganizationId = this.organizationId,
                    QueueLength    = ((this.defaultFolder != null) ? (this.defaultFolder.TotalCount + 1) : 1)
                };

                auditQueuesOpticsLogData.Log();
                instance.ResetChangeTracking();
            }
コード例 #7
0
 public QueryStrategy(AdminAuditLogSearch searchCriteria)
 {
     this.searchCriteria = searchCriteria;
     this.currentIndex   = 0;
 }
コード例 #8
0
 public AdminAuditLogSearchException(LocalizedString message, Exception innerException, AdminAuditLogSearch searchCriteria) : base(message, innerException)
 {
     this.searchCriteria = searchCriteria;
 }