public void ValidateHosts() { XmlNode oweXmlNode = this.GetOweXmlNode("Hosts"); if (oweXmlNode == null) { return; } bool flag = false; foreach (object obj in oweXmlNode.ChildNodes) { XmlNode xmlNode = (XmlNode)obj; if (xmlNode.NodeType == XmlNodeType.Element) { string attributeStringValue = ExtensionData.GetAttributeStringValue(xmlNode, "Name"); if ("Mailbox".Equals(attributeStringValue, StringComparison.OrdinalIgnoreCase)) { flag = true; break; } } } if (!flag) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonNoMailboxInHosts)); } }
private Uri GetAndValidateUrls(string elementName, CultureInfo culture) { Uri result = null; XmlNode xmlNode = this.xmlDoc.SelectSingleNode(this.GetOweXpath(elementName), this.namespaceManager); if (xmlNode != null) { string attributeStringValue = ExtensionData.GetAttributeStringValue(xmlNode, "DefaultValue"); result = SchemaParser.ValidateUrl(this.extensionInstallScope, elementName, attributeStringValue); using (XmlNodeList xmlNodeList = xmlNode.SelectNodes(this.GetOweChildPath("Override"), this.namespaceManager)) { string name = elementName + " " + "Override"; foreach (object obj in xmlNodeList) { XmlNode xmlNode2 = (XmlNode)obj; string attributeStringValue2 = ExtensionData.GetAttributeStringValue(xmlNode2, "Value"); Uri uri = SchemaParser.ValidateUrl(this.extensionInstallScope, name, attributeStringValue2); string attributeStringValue3 = ExtensionData.GetAttributeStringValue(xmlNode2, "Locale"); if (string.Compare(culture.ToString(), attributeStringValue3, StringComparison.OrdinalIgnoreCase) == 0) { result = uri; } } } } return(result); }
public override Version GetMinApiVersion() { XmlNode mandatoryOweXmlNode = base.GetMandatoryOweXmlNode("Requirements"); Version version = null; foreach (object obj in mandatoryOweXmlNode.ChildNodes) { XmlNode xmlNode = (XmlNode)obj; if (xmlNode.NodeType == XmlNodeType.Element && "Sets".Equals(xmlNode.LocalName, StringComparison.Ordinal)) { string input = ExtensionData.GetOptionalAttributeStringValue(xmlNode, "DefaultMinVersion", "1.1"); if (!Version.TryParse(input, out version) || version < SchemaConstants.LowestApiVersionSupportedBySchemaVersion1_1) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonDefaultVersionIsInvalid)); } int num = 0; foreach (object obj2 in xmlNode) { XmlNode xmlNode2 = (XmlNode)obj2; if (xmlNode2.NodeType == XmlNodeType.Element && "Set".Equals(xmlNode2.LocalName, StringComparison.Ordinal)) { num++; if (num > 1) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonOnlyMailboxSetAllowedInRequirement)); } string attributeStringValue = ExtensionData.GetAttributeStringValue(xmlNode2, "Name"); if (!"Mailbox".Equals(attributeStringValue, StringComparison.OrdinalIgnoreCase)) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonOnlyMailboxSetAllowedInRequirement)); } if (xmlNode2.Attributes != null) { XmlAttribute xmlAttribute = xmlNode2.Attributes["MinVersion"]; if (xmlAttribute != null && !string.IsNullOrEmpty(xmlAttribute.Value)) { input = xmlAttribute.Value; if (!Version.TryParse(input, out version) || version < SchemaConstants.LowestApiVersionSupportedBySchemaVersion1_1) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonMinVersionIsInvalid)); } } } } } if (num != 1) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonOnlyMailboxSetAllowedInRequirement)); } break; } } return(version); }
public string GetIdForTokenRequests() { XmlNode xmlNode = this.xmlDoc.SelectSingleNode(this.GetOweXpath("SourceLocation"), this.namespaceManager); if (xmlNode == null) { SchemaParser.Tracer.TraceError(0L, "SourceLocation tag is missing from the given node."); throw new OwaExtensionOperationException(Strings.ErrorCanNotReadInstalledList(Strings.FailureReasonSourceLocationTagMissing)); } return(ExtensionData.GetAttributeStringValue(xmlNode, "DefaultValue")); }
private void ValidateSourceLocationUrls(string xpath, string urlAttributeName, string errorMessageName) { using (XmlNodeList xmlNodeList = this.xmlDoc.SelectNodes(xpath, this.namespaceManager)) { foreach (object obj in xmlNodeList) { XmlNode xmlNode = (XmlNode)obj; string attributeStringValue = ExtensionData.GetAttributeStringValue(xmlNode, urlAttributeName); SchemaParser.ValidateUrl(this.extensionInstallScope, errorMessageName, attributeStringValue); } } }
public void ValidateRules() { RequestedCapabilities requestedCapabilities = this.GetRequestedCapabilities(); using (XmlNodeList xmlNodeList = this.xmlDoc.SelectNodes(this.GetOweXpath("Rule"), this.namespaceManager)) { int num = 0; int num2 = 0; HashSet <string> hashSet = null; HashSet <string> hashSet2 = null; int num3 = 0; foreach (object obj in xmlNodeList) { XmlNode xmlNode = (XmlNode)obj; XmlAttribute attribute = xmlNode.Attributes["type", "http://www.w3.org/2001/XMLSchema-instance"]; string a; if (ExtensionDataHelper.TryGetNameSpaceStrippedAttributeValue(attribute, out a)) { if (string.Equals(a, "RuleCollection", StringComparison.Ordinal)) { num2++; } else { num++; } if (num > 15 || num2 > 15) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonTooManyRule(15))); } if (string.Equals(a, "ItemIs", StringComparison.Ordinal)) { SchemaParser.ValidateItemIsRule(xmlNode); } else if (string.Equals(a, "ItemHasKnownEntity", StringComparison.Ordinal)) { SchemaParser.ValidateItemHasKnownEntityRule(xmlNode, requestedCapabilities, ref hashSet2, ref num3); } else if (string.Equals(a, "ItemHasRegularExpressionMatch", StringComparison.Ordinal)) { num3++; if (hashSet == null) { hashSet = new HashSet <string>(); } string attributeStringValue = ExtensionData.GetAttributeStringValue(xmlNode, "RegExName"); if (!hashSet.Add(attributeStringValue)) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonMultipleRulesWithSameRegExName(attributeStringValue))); } if (requestedCapabilities == RequestedCapabilities.Restricted) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonNoRegexRuleInRestricted)); } if (num3 > 5) { throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonTooManyRegexRule(5))); } SchemaParser.ValidateRegEx(attributeStringValue, ExtensionData.GetAttributeStringValue(xmlNode, "RegExValue"), "ItemHasRegularExpressionMatch", "RegExValue"); } } } } }
// Token: 0x06000BB5 RID: 2997 RVA: 0x0002FB58 File Offset: 0x0002DD58 protected override void ParseResponse(byte[] responseBuffer, int responseBufferSize) { Dictionary <string, string> dictionary = new Dictionary <string, string>(); Dictionary <string, string> dictionary2 = new Dictionary <string, string>(); try { using (MemoryStream memoryStream = new MemoryStream(responseBuffer, 0, responseBuffer.Length)) { SafeXmlDocument safeXmlDocument = new SafeXmlDocument(); safeXmlDocument.PreserveWhitespace = true; safeXmlDocument.Load(memoryStream); XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(safeXmlDocument.NameTable); xmlNamespaceManager.AddNamespace("o", "urn:schemas-microsoft-com:office:office"); XmlNodeList xmlNodeList = safeXmlDocument.SelectNodes("/o:assets/o:asset", xmlNamespaceManager); foreach (object obj in xmlNodeList) { XmlNode xmlNode = (XmlNode)obj; string attributeStringValue = ExtensionData.GetAttributeStringValue(xmlNode, "o:cm"); string attributeStringValue2 = ExtensionData.GetAttributeStringValue(xmlNode, "o:assetid"); string value = HttpUtility.UrlEncode(HttpUtility.HtmlDecode(ExtensionData.GetAttributeStringValue(xmlNode, "o:etok"))); bool flag = false; string optionalAttributeStringValue = ExtensionData.GetOptionalAttributeStringValue(xmlNode, "o:status", string.Empty); foreach (TokenRenewRequestAsset tokenRenewRequestAsset in this.extensionTokenRenewList) { if (string.Equals(tokenRenewRequestAsset.MarketplaceAssetID, attributeStringValue2, StringComparison.OrdinalIgnoreCase) && string.Equals(tokenRenewRequestAsset.MarketplaceContentMarket, attributeStringValue, StringComparison.OrdinalIgnoreCase)) { tokenRenewRequestAsset.IsResponseFound = true; if ("1".Equals(optionalAttributeStringValue, StringComparison.OrdinalIgnoreCase)) { dictionary.Add(tokenRenewRequestAsset.ExtensionID, value); } else if ("6".Equals(optionalAttributeStringValue, StringComparison.OrdinalIgnoreCase)) { dictionary2.Add(tokenRenewRequestAsset.ExtensionID, "2.1"); } else { dictionary2.Add(tokenRenewRequestAsset.ExtensionID, "2.0"); } flag = true; break; } } if (!flag) { BaseAsyncCommand.Tracer.TraceError <string, string, string>(0L, "The returned token does not match the asset and marketplace in the request. Asset id: {0} Marketplace: {1} Status code: {2}.", attributeStringValue2, attributeStringValue, optionalAttributeStringValue); ExtensionDiagnostics.Logger.LogEvent(ApplicationLogicEventLogConstants.Tuple_MismatchedReturnedToken, attributeStringValue2, new object[] { this.scenario, this.requestId, base.GetLoggedMailboxIdentifier(), attributeStringValue2, attributeStringValue, optionalAttributeStringValue }); } } foreach (TokenRenewRequestAsset tokenRenewRequestAsset2 in this.extensionTokenRenewList) { if (!tokenRenewRequestAsset2.IsResponseFound) { dictionary2.Add(tokenRenewRequestAsset2.ExtensionID, "2.0"); } } } } catch (XmlException exception) { this.InternalFailureCallback(exception, null); return; } base.LogResponseParsed(); this.successCallback(dictionary, dictionary2); }