Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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"));
        }
Esempio n. 5
0
 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);
         }
     }
 }
Esempio n. 6
0
        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);
        }