private static bool IsClassificationRetained(Item item) { return(ItemUtility.GetProperty <bool>(item, ItemSchema.ClassificationKeep, false)); }
private static Item CreateReplyOrReplyAllItem(BodyFormat bodyFormat, Item item, ReplyForwardFlags flags, bool replyAll, UserContext userContext, StoreObjectId parentFolderId) { if (bodyFormat < (BodyFormat)0) { throw new ArgumentOutOfRangeException("bodyFormat", bodyFormat, "bodyFormat has an invalid value"); } if (item == null) { throw new ArgumentNullException("item"); } if (userContext == null) { throw new ArgumentNullException("userContext"); } MessageItem messageItem = null; bool flag = true; try { bool flag2 = true; string text = string.Empty; if (!Utilities.IsFlagSet((int)flags, 2)) { text = ReplyForwardUtilities.CreateReplyForwardHeader(bodyFormat, item, userContext, parentFolderId); } ReplyForwardConfiguration replyForwardConfiguration = new ReplyForwardConfiguration(bodyFormat); replyForwardConfiguration.ConversionOptionsForSmime = Utilities.CreateInboundConversionOptions(userContext); replyForwardConfiguration.AddBodyPrefix(text); MessageItem messageItem2; CalendarItemBase calendarItemBase; PostItem postItem; if ((messageItem2 = (item as MessageItem)) != null) { if (replyAll) { messageItem = messageItem2.CreateReplyAll(userContext.MailboxSession, userContext.DraftsFolderId, replyForwardConfiguration); } else { messageItem = messageItem2.CreateReply(userContext.MailboxSession, userContext.DraftsFolderId, replyForwardConfiguration); } ReplyForwardUtilities.SmartReplyOrForward(messageItem2, messageItem, userContext); ReplyForwardUtilities.CopyMessageClassificationProperties(item, messageItem, userContext); } else if ((calendarItemBase = (item as CalendarItemBase)) != null) { if (calendarItemBase.IsMeeting) { if (replyAll) { messageItem = calendarItemBase.CreateReplyAll(userContext.MailboxSession, userContext.DraftsFolderId, replyForwardConfiguration); } else { messageItem = calendarItemBase.CreateReply(userContext.MailboxSession, userContext.DraftsFolderId, replyForwardConfiguration); } } else { flag2 = false; } } else if ((postItem = (item as PostItem)) != null) { if (replyAll) { messageItem = postItem.CreateReplyAll(userContext.MailboxSession, userContext.DraftsFolderId, replyForwardConfiguration); } else { messageItem = postItem.CreateReply(userContext.MailboxSession, userContext.DraftsFolderId, replyForwardConfiguration); } } else { flag2 = false; } if (!flag2) { throw new OwaOperationNotSupportedException(LocalizedStrings.GetNonEncoded(293574673)); } if (Globals.ArePerfCountersEnabled) { OwaSingleCounters.ItemsCreated.Increment(); } if (Utilities.IsFlagSet((int)flags, 1)) { ItemUtility.SetItemBody(messageItem, bodyFormat, text); } flag = false; } catch (NotSupportedException ex) { ExTraceGlobals.CoreTracer.TraceDebug <string>(0L, "Unable to create a Reply or ReplyAll item. Exception {0}", ex.Message); throw new OwaInvalidRequestException("Unable to create a Reply or ReplyAll item."); } finally { if (flag && messageItem != null) { messageItem.Dispose(); messageItem = null; } } return(messageItem); }
public static Item CreateForwardItem(BodyFormat bodyFormat, Item item, ReplyForwardFlags flags, UserContext userContext, StoreObjectId parentFolderId) { if (bodyFormat < (BodyFormat)0) { throw new ArgumentOutOfRangeException("bodyFormat", bodyFormat, "bodyFormat has an invalid value"); } if (item == null) { throw new ArgumentNullException("item"); } if (userContext == null) { throw new ArgumentNullException("userContext"); } MessageItem messageItem = null; bool flag = true; try { string text = string.Empty; if (!Utilities.IsFlagSet((int)flags, 2)) { text = ReplyForwardUtilities.CreateReplyForwardHeader(bodyFormat, item, userContext, parentFolderId); } ReplyForwardConfiguration replyForwardConfiguration = new ReplyForwardConfiguration(bodyFormat); replyForwardConfiguration.ConversionOptionsForSmime = Utilities.CreateInboundConversionOptions(userContext); replyForwardConfiguration.AddBodyPrefix(text); MessageItem messageItem2; CalendarItemBase calendarItemBase; if ((messageItem2 = (item as MessageItem)) != null) { messageItem = messageItem2.CreateForward(userContext.MailboxSession, userContext.DraftsFolderId, replyForwardConfiguration); if (!(messageItem2 is MeetingMessage)) { ReplyForwardUtilities.CopyMessageClassificationProperties(item, messageItem, userContext); } ReplyForwardUtilities.SmartReplyOrForward(messageItem2, messageItem, userContext); } else if ((calendarItemBase = (item as CalendarItemBase)) != null) { messageItem = calendarItemBase.CreateForward(userContext.MailboxSession, userContext.DraftsFolderId, replyForwardConfiguration, null, null); } else { PostItem postItem; if ((postItem = (item as PostItem)) == null) { throw new ArgumentException("HTML reply forward headers can only be created for MessageItem or CalendarItemBase or PostItem. "); } messageItem = postItem.CreateForward(userContext.MailboxSession, userContext.DraftsFolderId, replyForwardConfiguration); } if (Globals.ArePerfCountersEnabled) { OwaSingleCounters.ItemsCreated.Increment(); } if (Utilities.IsFlagSet((int)flags, 1)) { ItemUtility.SetItemBody(messageItem, bodyFormat, text); } flag = false; } finally { if (flag && messageItem != null) { messageItem.Dispose(); messageItem = null; } } return(messageItem); }
private static bool HasRight(Item item, EffectiveRights effectiveRightToCheck) { EffectiveRights property = ItemUtility.GetProperty <EffectiveRights>(item, StoreObjectSchema.EffectiveRights, EffectiveRights.None); return((property & effectiveRightToCheck) == effectiveRightToCheck); }
public static bool HasDeletePolicy(IStorePropertyBag storePropertyBag) { byte[] property = ItemUtility.GetProperty <byte[]>(storePropertyBag, StoreObjectSchema.PolicyTag, null); return(property != null); }
private bool BindItemAndShowDialog(StoreObjectId itemId, string type, StringWriter writer) { MessageItem messageItem = null; bool result; try { messageItem = Item.BindAsMessage(this.mailboxSession, itemId); if (messageItem != null) { string text = ItemUtility.GetProperty <string>(messageItem, StoreObjectSchema.ItemClass, null); if (text == null) { text = "IPM.Note"; } string property = ItemUtility.GetProperty <string>(messageItem, StoreObjectSchema.ContentClass, string.Empty); if (ObjectClass.IsOfClass(property, "rpmsg.message")) { text += ".irm"; } writer.Write("shwNwItmDlg(\""); if (messageItem.From != null && messageItem.From.DisplayName != null) { Utilities.JavascriptEncode(Utilities.HtmlEncode(messageItem.From.DisplayName), writer); } writer.Write("\",\""); if (messageItem.Subject != null) { Utilities.JavascriptEncode(Utilities.HtmlEncode(messageItem.Subject), writer); } writer.Write("\",\"" + type + "\",\""); using (StringWriter stringWriter = new StringWriter()) { SmallIconManager.RenderItemIcon(stringWriter, this.userContext, text, false, "nwItmImg", new string[0]); Utilities.JavascriptEncode(stringWriter.ToString(), writer); } writer.Write("\");"); } result = true; } catch (ObjectNotFoundException) { if (type != null) { if (!(type == "lnkNwMl")) { if (!(type == "lnkNwVMl")) { if (type == "lnkNwFx") { writer.Write("shwNF(0);"); } } else { writer.Write("shwNVM(0);"); } } else { writer.Write("shwNM(0);"); } } result = false; } finally { if (messageItem != null) { messageItem.Dispose(); } } return(result); }
private Stream LoadAttachmentDocument(bool isLoadingStream, out RightsManagedMessageDecryptionStatus decryptionStatus) { decryptionStatus = RightsManagedMessageDecryptionStatus.Success; StringBuilder stringBuilder = new StringBuilder(); List <AttachmentId> list = new List <AttachmentId>(); UserContext userContext = this.owaContext.UserContext; string queryStringParameter = Utilities.GetQueryStringParameter(this.owaContext.HttpContext.Request, "ewsid", false); bool flag = string.IsNullOrEmpty(queryStringParameter); OwaStoreObjectId owaStoreObjectId; string text; if (!flag) { stringBuilder.Append("service.svc/s/GetFileAttachment?id="); stringBuilder.Append(Utilities.UrlEncode(queryStringParameter)); string canary15CookieValue = Utilities.GetCanary15CookieValue(); if (canary15CookieValue != null) { stringBuilder.Append("&X-OWA-CANARY=" + canary15CookieValue); } IdHeaderInformation idHeaderInformation = ServiceIdConverter.ConvertFromConcatenatedId(queryStringParameter, BasicTypes.Attachment, list); owaStoreObjectId = OwaStoreObjectId.CreateFromMailboxItemId(idHeaderInformation.ToStoreObjectId()); text = owaStoreObjectId.ToString(); } else { text = Utilities.GetQueryStringParameter(this.owaContext.HttpContext.Request, "id"); owaStoreObjectId = OwaStoreObjectId.CreateFromString(text); stringBuilder.Append("attachment.ashx?attach=1&id="); stringBuilder.Append(Utilities.UrlEncode(text)); } Stream result; using (Item item = Utilities.GetItem <Item>(userContext, owaStoreObjectId, new PropertyDefinition[] { ItemSchema.SentRepresentingDisplayName, ItemSchema.Subject })) { if (!Utilities.IsPublic(item) && userContext.IsIrmEnabled && isLoadingStream) { item.OpenAsReadWrite(); } if (Utilities.IsIrmRestricted(item)) { if (!userContext.IsIrmEnabled || userContext.IsBasicExperience) { decryptionStatus = RightsManagedMessageDecryptionStatus.FeatureDisabled; return(null); } RightsManagedMessageItem rightsManagedMessageItem = (RightsManagedMessageItem)item; if (!rightsManagedMessageItem.CanDecode) { decryptionStatus = RightsManagedMessageDecryptionStatus.NotSupported; return(null); } try { Utilities.IrmDecryptIfRestricted(item, userContext, true); } catch (RightsManagementPermanentException exception) { decryptionStatus = RightsManagedMessageDecryptionStatus.CreateFromException(exception); return(null); } catch (RightsManagementTransientException exception2) { decryptionStatus = RightsManagedMessageDecryptionStatus.CreateFromException(exception2); return(null); } } this.messageFrom = ItemUtility.GetProperty <string>(item, ItemSchema.SentRepresentingDisplayName, string.Empty); this.messageSubject = ItemUtility.GetProperty <string>(item, ItemSchema.Subject, string.Empty); this.messageId = text; if (flag) { Utilities.FillAttachmentIdList(item, this.owaContext.HttpContext.Request, list); } using (StreamAttachment streamAttachment = Utilities.GetAttachment(item, list, userContext) as StreamAttachment) { if (streamAttachment == null) { throw new OwaInvalidRequestException("Attachment is not a stream attachment"); } this.mimeType = (streamAttachment.ContentType ?? streamAttachment.CalculatedContentType); this.fileName = ((!string.IsNullOrEmpty(streamAttachment.DisplayName)) ? streamAttachment.DisplayName : streamAttachment.FileName); this.fileSize = streamAttachment.Size; this.documentPath = this.fileName; this.documentIdStringBuilder.Append(Convert.ToBase64String(userContext.MailboxSession.MailboxOwner.MailboxInfo.GetDatabaseGuid().ToByteArray())); this.documentIdStringBuilder.Append("-"); for (int i = 0; i < list.Count; i++) { this.documentIdStringBuilder.Append(list[i].ToBase64String()); this.documentIdStringBuilder.Append("-"); if (flag) { stringBuilder.Append("&attid"); stringBuilder.Append(i.ToString(CultureInfo.InstalledUICulture)); stringBuilder.Append("="); stringBuilder.Append(Utilities.UrlEncode(list[i].ToBase64String())); } } if (flag) { stringBuilder.Append("&attcnt="); stringBuilder.Append(list.Count); } this.documentIdStringBuilder.Append(streamAttachment.LastModifiedTime.UtcTicks); this.openLink = stringBuilder.ToString(); if (isLoadingStream) { Stream contentStream = streamAttachment.GetContentStream(); MsoIpiResult msoIpiResult = MsoIpiResult.Unknown; try { msoIpiResult = ProtectorsManager.Instance.IsProtected(this.fileName, contentStream); } catch (AttachmentProtectionException exception3) { decryptionStatus = new RightsManagedMessageDecryptionStatus(RightsManagementFailureCode.CorruptData, exception3); return(null); } if (msoIpiResult == MsoIpiResult.Protected) { this.isIrmProtected = true; contentStream.Dispose(); if (!userContext.IsIrmEnabled || userContext.IsBasicExperience) { decryptionStatus = RightsManagedMessageDecryptionStatus.FeatureDisabled; result = null; } else { UseLicenseAndUsageRights useLicenseAndUsageRights; bool flag2; Stream stream; try { stream = StreamAttachment.OpenRestrictedAttachment(streamAttachment, this.owaContext.ExchangePrincipal.MailboxInfo.OrganizationId, this.owaContext.ExchangePrincipal.MailboxInfo.PrimarySmtpAddress.ToString(), this.owaContext.LogonIdentity.UserSid, this.owaContext.ExchangePrincipal.RecipientTypeDetails, out useLicenseAndUsageRights, out flag2); } catch (RightsManagementPermanentException exception4) { decryptionStatus = RightsManagedMessageDecryptionStatus.CreateFromException(exception4); return(null); } catch (RightsManagementTransientException exception5) { decryptionStatus = RightsManagedMessageDecryptionStatus.CreateFromException(exception5); return(null); } if (flag2 && ObjectClass.IsMessage(item.ClassName, false) && !Utilities.IsIrmRestricted(item)) { object obj = item.TryGetProperty(MessageItemSchema.IsDraft); if (obj is bool && !(bool)obj && !DrmClientUtils.IsCachingOfLicenseDisabled(useLicenseAndUsageRights.UseLicense)) { streamAttachment[AttachmentSchema.DRMRights] = useLicenseAndUsageRights.UsageRights; streamAttachment[AttachmentSchema.DRMExpiryTime] = useLicenseAndUsageRights.ExpiryTime; using (Stream stream2 = streamAttachment.OpenPropertyStream(AttachmentSchema.DRMServerLicenseCompressed, PropertyOpenMode.Create)) { DrmEmailCompression.CompressUseLicense(useLicenseAndUsageRights.UseLicense, stream2); } streamAttachment[AttachmentSchema.DRMPropsSignature] = useLicenseAndUsageRights.DRMPropsSignature; streamAttachment.Save(); item.Save(SaveMode.ResolveConflicts); } } string conversationOwnerFromPublishLicense = DrmClientUtils.GetConversationOwnerFromPublishLicense(useLicenseAndUsageRights.PublishingLicense); RmsTemplate rmsTemplate = RmsTemplate.CreateFromPublishLicense(useLicenseAndUsageRights.PublishingLicense); this.isPrintRestricted = !useLicenseAndUsageRights.UsageRights.IsUsageRightGranted(ContentRight.Print); this.isCopyRestricted = !useLicenseAndUsageRights.UsageRights.IsUsageRightGranted(ContentRight.Extract); SanitizingStringBuilder <OwaHtml> sanitizingStringBuilder = new SanitizingStringBuilder <OwaHtml>(); string str = string.Format(LocalizedStrings.GetNonEncoded(-500320626), rmsTemplate.Name, rmsTemplate.Description); sanitizingStringBuilder.Append(str); if (!string.IsNullOrEmpty(conversationOwnerFromPublishLicense)) { sanitizingStringBuilder.Append("<br>"); sanitizingStringBuilder.Append(string.Format(LocalizedStrings.GetNonEncoded(1670455506), conversationOwnerFromPublishLicense)); } this.irmInfobarMessage = sanitizingStringBuilder.ToSanitizedString <SanitizedHtmlString>(); result = stream; } } else { contentStream.Seek(0L, SeekOrigin.Begin); result = contentStream; } } else { result = null; } } } return(result); }
// Token: 0x06000796 RID: 1942 RVA: 0x00039B98 File Offset: 0x00037D98 public PreFormActionResponse Execute(OwaContext owaContext, out ApplicationElement applicationElement, out string type, out string state, out string action) { if (owaContext == null) { throw new ArgumentNullException("owaContext"); } applicationElement = ApplicationElement.Item; type = null; action = "Open"; state = string.Empty; CalendarItemBase calendarItemBase = null; string queryStringParameter = Utilities.GetQueryStringParameter(owaContext.HttpContext.Request, "id"); UserContext userContext = owaContext.UserContext; OwaStoreObjectId preFormActionId = OwaStoreObjectId.CreateFromString(queryStringParameter); bool flag = false; Item item = null; bool flag2 = false; try { calendarItemBase = Utilities.GetItemForRequest <CalendarItemBase>(owaContext, out item, false, new PropertyDefinition[] { StoreObjectSchema.EffectiveRights }); flag2 = (item != null); } catch (ObjectNotFoundException) { ExTraceGlobals.CalendarDataTracer.TraceDebug(0L, "calendar item could not be found."); string queryStringParameter2 = Utilities.GetQueryStringParameter(owaContext.HttpContext.Request, "gid", false); if (string.IsNullOrEmpty(queryStringParameter2)) { throw; } byte[] globalObjectIdBytes = null; VersionedId versionedId = null; try { globalObjectIdBytes = Convert.FromBase64String(queryStringParameter2); } catch (FormatException innerException) { throw new OwaInvalidRequestException("Invalid global object id for conflicting calendar item", innerException); } string queryStringParameter3 = Utilities.GetQueryStringParameter(owaContext.HttpContext.Request, "fid", false); OwaStoreObjectId owaStoreObjectId = null; if (!string.IsNullOrEmpty(queryStringParameter3)) { owaStoreObjectId = OwaStoreObjectId.CreateFromString(queryStringParameter3); } else { owaStoreObjectId = userContext.CalendarFolderOwaId; } using (CalendarFolder folder = Utilities.GetFolder <CalendarFolder>(userContext, owaStoreObjectId, new PropertyDefinition[0])) { versionedId = folder.GetCalendarItemId(globalObjectIdBytes); } if (versionedId == null) { throw; } MailboxSession session = (MailboxSession)owaStoreObjectId.GetSession(userContext); calendarItemBase = CalendarItemBase.Bind(session, versionedId, new StorePropertyDefinition[] { StoreObjectSchema.EffectiveRights }); flag = true; } finally { using (item) { using (calendarItemBase) { if (calendarItemBase != null) { if (!Utilities.IsPublic(calendarItemBase) && calendarItemBase.IsMeeting && !calendarItemBase.IsOrganizer()) { type = "IPM.Schedule.Meeting.Request"; } else { type = "IPM.Appointment"; if (flag2 || !ItemUtility.UserCanEditItem(calendarItemBase) || Utilities.IsItemInExternalSharedInFolder(userContext, calendarItemBase)) { action = string.Empty; } } if (!flag2) { if (flag) { owaContext.PreFormActionId = OwaStoreObjectId.CreateFromStoreObject(calendarItemBase); } else { owaContext.PreFormActionId = preFormActionId; } } } } } } return(null); }