예제 #1
0
        public void Write(ExchangeAdminAuditRecord record)
        {
            Stopwatch stopwatch = Stopwatch.StartNew();

            using (AdminAuditOpticsLogData adminAuditOpticsLogData = new AdminAuditOpticsLogData())
            {
                try
                {
                    adminAuditOpticsLogData.Tenant             = (string.IsNullOrEmpty(record.OrganizationName) ? "First Org" : record.OrganizationName);
                    adminAuditOpticsLogData.CmdletName         = record.Operation;
                    adminAuditOpticsLogData.ExternalAccess     = record.ExternalAccess;
                    adminAuditOpticsLogData.OperationSucceeded = (record.Succeeded ?? false);
                    adminAuditOpticsLogData.RecordId           = record.Id;
                    adminAuditOpticsLogData.Asynchronous       = true;
                    IAuditLog       auditLog    = this.GetAuditLog(record.OrganizationId ?? string.Empty, record);
                    IAuditLogRecord auditRecord = this.ConvertAuditRecord(record);
                    adminAuditOpticsLogData.RecordSize     = auditLog.WriteAuditRecord(auditRecord);
                    adminAuditOpticsLogData.LoggingError   = null;
                    adminAuditOpticsLogData.AuditSucceeded = true;
                }
                catch (Exception loggingError)
                {
                    adminAuditOpticsLogData.LoggingError   = loggingError;
                    adminAuditOpticsLogData.AuditSucceeded = false;
                    throw;
                }
                finally
                {
                    adminAuditOpticsLogData.LoggingTime = stopwatch.ElapsedMilliseconds;
                }
            }
        }
예제 #2
0
        public static IAuditLogRecord FillAdminRecordDetails(ExchangeAdminAuditRecord auditRecord, Trace trace)
        {
            AdminAuditLogRecord adminAuditLogRecord = new AdminAuditLogRecord(trace)
            {
                Verbose                    = true,
                Cmdlet                     = auditRecord.Operation,
                ExternalAccess             = auditRecord.ExternalAccess,
                ObjectModified             = auditRecord.ObjectId,
                UserId                     = auditRecord.UserId,
                RunDate                    = auditRecord.CreationTime,
                Succeeded                  = (auditRecord.Succeeded ?? false),
                Error                      = auditRecord.Error,
                ModifiedObjectResolvedName = auditRecord.ModifiedObjectResolvedName,
                Parameters                 = new Hashtable(),
                ModifiedPropertyValues     = new Hashtable(),
                OriginalPropertyValues     = new Hashtable()
            };

            if (auditRecord.Parameters != null)
            {
                foreach (NameValuePair nameValuePair in auditRecord.Parameters)
                {
                    adminAuditLogRecord.Parameters.Add(nameValuePair.Name, nameValuePair.Value);
                }
            }
            if (auditRecord.ModifiedProperties != null)
            {
                foreach (ModifiedProperty modifiedProperty in auditRecord.ModifiedProperties)
                {
                    adminAuditLogRecord.ModifiedPropertyValues.Add(modifiedProperty.Name, modifiedProperty.NewValue);
                    adminAuditLogRecord.OriginalPropertyValues.Add(modifiedProperty.Name, modifiedProperty.OldValue);
                }
            }
            return(adminAuditLogRecord);
        }
예제 #3
0
 // Token: 0x0600074E RID: 1870 RVA: 0x0001C86E File Offset: 0x0001AA6E
 public void Visit(ExchangeAdminAuditRecord record)
 {
     this.adminAuditWriter.Write(record);
 }
예제 #4
0
 public void Visit(ExchangeAdminAuditRecord record)
 {
     this.Result = AuditLogRecord.FillAdminRecordDetails(record, this.trace);
 }