protected AuditEventRecordAdapter(ExchangeMailboxAuditBaseRecord record, string displayOrganizationId)
        {
            this.record = record;
            Util.ThrowOnNullArgument(record, "record");
            MailboxAuditOperations mailboxAuditOperations;

            this.AuditOperation     = (Enum.TryParse <MailboxAuditOperations>(record.Operation, out mailboxAuditOperations) ? mailboxAuditOperations : MailboxAuditOperations.None);
            this.Result             = ((record.OperationResult == null) ? OperationResult.Succeeded : ((record.OperationResult == 2) ? OperationResult.PartiallySucceeded : OperationResult.Failed));
            this.OrganizationId     = displayOrganizationId;
            this.MailboxGuid        = record.MailboxGuid;
            this.OperationName      = record.Operation;
            this.LogonTypeName      = record.LogonType.ToString();
            this.OperationSucceeded = ((record.OperationResult == null) ? OperationResult.Succeeded : ((record.OperationResult == 2) ? OperationResult.PartiallySucceeded : OperationResult.Failed));
            this.ExternalAccess     = record.ExternalAccess;
            this.CreationTime       = record.CreationTime;
            this.RecordId           = record.Id;
        }
예제 #2
0
        private static void Fill(ExchangeMailboxAuditBaseRecord record, MailboxSession session, MailboxAuditOperations operation, OperationResult result, LogonType logonType, bool externalAccess)
        {
            EnumValidator.ThrowIfInvalid <MailboxAuditOperations>(operation);
            EnumValidator.ThrowIfInvalid <OperationResult>(result, "result");
            EnumValidator.ThrowIfInvalid <LogonType>(logonType, "logonType");
            Util.ThrowOnNullArgument(session, "session");
            record.Operation = string.Format(CultureInfo.InvariantCulture, "{0}", new object[]
            {
                operation
            });
            record.OperationResult   = AuditRecordFactory.GetOperationResult(result);
            record.LogonType         = AuditRecordFactory.GetLogonType(logonType);
            record.ExternalAccess    = externalAccess;
            record.CreationTime      = DateTime.UtcNow;
            record.InternalLogonType = AuditRecordFactory.GetLogonType(session.LogonType);
            record.MailboxGuid       = session.MailboxOwner.MailboxInfo.MailboxGuid;
            OrganizationId organizationId = session.OrganizationId;

            record.OrganizationId   = ((organizationId == null || organizationId.OrganizationalUnit == null || organizationId.ConfigurationUnit == null) ? null : Convert.ToBase64String(organizationId.GetBytes(Encoding.UTF8)));
            record.OrganizationName = AuditRecordFactory.GetOrgNameFromOrgId(organizationId);
            record.MailboxOwnerUPN  = session.MailboxOwner.MailboxInfo.PrimarySmtpAddress.ToString();
            if (session.MailboxOwner.Sid != null)
            {
                record.MailboxOwnerSid = string.Format(CultureInfo.InvariantCulture, "{0}", new object[]
                {
                    session.MailboxOwner.Sid
                });
                if (session.MailboxOwner.MasterAccountSid != null)
                {
                    record.MailboxOwnerMasterAccountSid = string.Format(CultureInfo.InvariantCulture, "{0}", new object[]
                    {
                        session.MailboxOwner.MasterAccountSid
                    });
                }
            }
            IdentityPair userIdentityPair = AuditRecordFactory.GetUserIdentityPair(session, logonType);

            if (userIdentityPair.LogonUserSid != null)
            {
                record.LogonUserSid = string.Format(CultureInfo.InvariantCulture, "{0}", new object[]
                {
                    userIdentityPair.LogonUserSid
                });
                record.UserId = record.LogonUserSid;
            }
            else
            {
                record.UserId = session.MailboxOwner.MailboxInfo.MailboxGuid.ToString("D", CultureInfo.InvariantCulture);
            }
            if (userIdentityPair.LogonUserDisplayName != null)
            {
                record.LogonUserDisplayName = string.Format(CultureInfo.InvariantCulture, "{0}", new object[]
                {
                    userIdentityPair.LogonUserDisplayName
                });
            }
            string text = (session.RemoteClientSessionInfo == null) ? session.ClientInfoString : session.RemoteClientSessionInfo.ClientInfoString;

            if (!string.IsNullOrEmpty(text))
            {
                record.ClientInfoString = text;
            }
            record.ClientIPAddress = string.Format(CultureInfo.InvariantCulture, "{0}", new object[]
            {
                session.ClientIPAddress
            });
            if (!string.IsNullOrEmpty(session.ClientMachineName))
            {
                record.ClientMachineName = session.ClientMachineName;
            }
            if (!string.IsNullOrEmpty(session.ClientProcessName))
            {
                record.ClientProcessName = session.ClientProcessName;
            }
            if (session.ClientVersion != 0L)
            {
                record.ClientVersion = AuditRecordFactory.GetVersionString(session.ClientVersion);
            }
            record.OriginatingServer = string.Format(CultureInfo.InvariantCulture, "{0} ({1})\r\n", new object[]
            {
                AuditRecordFactory.MachineName,
                "15.00.1497.012"
            });
        }