Esempio n. 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;
                }
            }
        }
Esempio n. 2
0
        public IEnumerable <KeyValuePair <string, string> > GetDetails()
        {
            AuditLogRecord.RecordVisitor recordVisitor = new AuditLogRecord.RecordVisitor(this.trace);
            this.record.Visit(recordVisitor);
            IAuditLogRecord result = recordVisitor.Result;

            return(result.GetDetails());
        }
Esempio n. 3
0
        public int WriteAuditRecord(IAuditLogRecord auditRecord)
        {
            this.ewsClient.RefreshUrl(false);
            int            result         = 0;
            CreateItemType createItemType = EwsAuditLog.GetCreateItemType(auditRecord, this.auditFolderId, out result);

            this.ewsClient.CreateItem(createItemType);
            return(result);
        }
Esempio n. 4
0
        public static string GetAsString(IAuditLogRecord auditRecord)
        {
            StringBuilder stringBuilder = new StringBuilder(1024);

            foreach (KeyValuePair <string, string> keyValuePair in auditRecord.GetDetails())
            {
                stringBuilder.AppendFormat("{0}{1} {2}\r\n", keyValuePair.Key, ":", keyValuePair.Value);
            }
            return(stringBuilder.ToString());
        }
Esempio n. 5
0
        public int WriteAuditRecord(IAuditLogRecord auditRecord)
        {
            if (this.recordFormatter == null)
            {
                throw new InvalidOperationException("Audit log is not configured properly.");
            }
            int result;

            using (MessageItem messageItem = MessageItem.Create(this.Session, this.LogFolderId))
            {
                result = this.recordFormatter(auditRecord, messageItem);
                messageItem.Save(SaveMode.NoConflictResolutionForceSave);
            }
            return(result);
        }
Esempio n. 6
0
        public static int SerializeMailboxAuditRecord(IAuditLogRecord auditRecord, MessageItem auditMessage)
        {
            int result = 0;
            BodyWriteConfiguration configuration = new BodyWriteConfiguration(BodyFormat.TextPlain);

            using (TextWriter textWriter = auditMessage.Body.OpenTextWriter(configuration))
            {
                string asString = AuditLogParseSerialize.GetAsString(auditRecord);
                textWriter.Write(asString);
                result = Encoding.Unicode.GetByteCount(asString);
            }
            ExTraceGlobals.FaultInjectionTracer.TraceTest(2219191613U);
            auditMessage.ClassName = "IPM.AuditLog";
            return(result);
        }
Esempio n. 7
0
        private static CreateItemType GetCreateItemType(IAuditLogRecord auditRecord, BaseFolderIdType targetFolderId, out int recordSize)
        {
            string asString = AuditLogParseSerialize.GetAsString(auditRecord);
            string text     = string.Format("{0} : {1}", auditRecord.UserId, auditRecord.Operation);
            string text2    = string.Format("{0}{1}", auditRecord.UserId, "audit");
            string text3    = string.Format("{0}{1}", auditRecord.ObjectId, "audit");

            recordSize = Encoding.Unicode.GetByteCount(text) + Encoding.Unicode.GetByteCount(asString) + Encoding.Unicode.GetByteCount(text2) + Encoding.Unicode.GetByteCount(text3);
            return(new CreateItemType
            {
                MessageDisposition = MessageDispositionType.SaveOnly,
                MessageDispositionSpecified = true,
                SavedItemFolderId = new TargetFolderIdType
                {
                    Item = targetFolderId
                },
                Items = new NonEmptyArrayOfAllItemsType
                {
                    Items = new ItemType[]
                    {
                        new MessageType
                        {
                            ItemClass = "IPM.AuditLog",
                            Subject = text,
                            Body = new BodyType
                            {
                                Value = asString,
                                BodyType1 = BodyTypeType.Text
                            },
                            From = new SingleRecipientType
                            {
                                Item = new EmailAddressType
                                {
                                    Name = text2
                                }
                            },
                            ToRecipients = new EmailAddressType[]
                            {
                                new EmailAddressType
                                {
                                    Name = text3
                                }
                            }
                        }
                    }
                }
            });
        }
Esempio n. 8
0
        public static int SerializeAdminAuditRecord(IAuditLogRecord auditRecord, MessageItem auditMessage)
        {
            int result = 0;

            auditMessage.Subject = string.Format("{0} : {1}", auditRecord.UserId, auditRecord.Operation);
            BodyWriteConfiguration configuration = new BodyWriteConfiguration(BodyFormat.TextPlain);

            using (TextWriter textWriter = auditMessage.Body.OpenTextWriter(configuration))
            {
                string asString = AuditLogParseSerialize.GetAsString(auditRecord);
                textWriter.Write(asString);
                result = Encoding.Unicode.GetByteCount(asString);
            }
            auditMessage.From = new Participant(string.Format("{0}{1}", auditRecord.UserId, "audit"), string.Empty, string.Empty);
            auditMessage.Recipients.Add(new Participant(string.Format("{0}{1}", auditRecord.ObjectId, "audit"), string.Empty, string.Empty));
            auditMessage.ClassName = "IPM.AuditLog";
            return(result);
        }
Esempio n. 9
0
 public void Visit(ExchangeMailboxAuditGroupRecord record)
 {
     this.Result = AuditLogRecord.FillMailboxAuditGroupRecordDetails(record, this.trace);
 }
Esempio n. 10
0
 public void Visit(ExchangeAdminAuditRecord record)
 {
     this.Result = AuditLogRecord.FillAdminRecordDetails(record, this.trace);
 }