Exemple #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ClientExtension"/> class.
 /// </summary>
 /// <param name="type">Extension type</param>
 /// <param name="scope">Extension install scope</param>
 /// <param name="manifestStream">Manifest stream, can be null</param>
 /// <param name="marketplaceAssetID">The asset ID for Office Marketplace</param>
 /// <param name="marketplaceContentMarket">The content market for Office Marketplace</param>
 /// <param name="isAvailable">Whether extension is available</param>
 /// <param name="isMandatory">Whether extension is mandatory</param>
 /// <param name="isEnabledByDefault">Whether extension is enabled by default</param>
 /// <param name="providedTo">Who the extension is provided for (e.g. "entire org" or "specific users")</param>
 /// <param name="specificUsers">List of users extension is provided for, can be null</param>
 /// <param name="appStatus">App status</param>
 /// <param name="etoken">Etoken</param>
 public ClientExtension(
     ExtensionType type,
     ExtensionInstallScope scope,
     Stream manifestStream,
     string marketplaceAssetID,
     string marketplaceContentMarket,
     bool isAvailable,
     bool isMandatory,
     bool isEnabledByDefault,
     ClientExtensionProvidedTo providedTo,
     StringList specificUsers,
     string appStatus,
     string etoken)
     : this()
 {
     this.Type                     = type;
     this.Scope                    = scope;
     this.ManifestStream           = manifestStream;
     this.MarketplaceAssetID       = marketplaceAssetID;
     this.MarketplaceContentMarket = marketplaceContentMarket;
     this.IsAvailable              = isAvailable;
     this.IsMandatory              = isMandatory;
     this.IsEnabledByDefault       = isEnabledByDefault;
     this.ProvidedTo               = providedTo;
     this.SpecificUsers            = specificUsers;
     this.AppStatus                = appStatus;
     this.Etoken                   = etoken;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ClientExtension"/> class.
 /// </summary>
 /// <param name="type">Extension type</param>
 /// <param name="scope">Extension install scope</param>
 /// <param name="manifestStream">Manifest stream, can be null</param>
 /// <param name="marketplaceAssetID">The asset ID for Office Marketplace</param>
 /// <param name="marketplaceContentMarket">The content market for Office Marketplace</param>
 /// <param name="isAvailable">Whether extension is available</param>
 /// <param name="isMandatory">Whether extension is mandatory</param>
 /// <param name="isEnabledByDefault">Whether extension is enabled by default</param>
 /// <param name="providedTo">Who the extension is provided for (e.g. "entire org" or "specific users")</param>
 /// <param name="specificUsers">List of users extension is provided for, can be null</param>
 /// <param name="appStatus">App status</param>
 /// <param name="etoken">Etoken</param>
 public ClientExtension(
     ExtensionType type,
     ExtensionInstallScope scope,
     Stream manifestStream,
     string marketplaceAssetID,
     string marketplaceContentMarket,
     bool isAvailable,
     bool isMandatory,
     bool isEnabledByDefault,
     ClientExtensionProvidedTo providedTo,
     StringList specificUsers,
     string appStatus,
     string etoken)
         : this()
 {
     this.Type = type;
     this.Scope = scope;
     this.ManifestStream = manifestStream;
     this.MarketplaceAssetID = marketplaceAssetID;
     this.MarketplaceContentMarket = marketplaceContentMarket;
     this.IsAvailable = isAvailable;
     this.IsMandatory = isMandatory;
     this.IsEnabledByDefault = isEnabledByDefault;
     this.ProvidedTo = providedTo;
     this.SpecificUsers = specificUsers;
     this.AppStatus = appStatus;
     this.Etoken = etoken;
 }
Exemple #3
0
 public SchemaParser(SafeXmlDocument xmlDoc, ExtensionInstallScope extensionInstallScope)
 {
     this.xmlDoc = xmlDoc;
     this.extensionInstallScope = extensionInstallScope;
     this.namespaceManager      = new XmlNamespaceManager(xmlDoc.NameTable);
     this.namespaceManager.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
     this.namespaceManager.AddNamespace(this.GetOweNamespacePrefix(), this.GetOweNamespaceUri());
     this.xpathPrefix = "//" + this.GetOweNamespacePrefix() + ":";
     this.oweNameSpacePrefixWithSemiColon = this.GetOweNamespacePrefix() + ":";
 }
Exemple #4
0
        private static Uri ValidateUrl(ExtensionInstallScope extensionScope, string name, string url)
        {
            Uri uri;

            if (!Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out uri))
            {
                throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonInvalidUrlValue(name, url)));
            }
            if (uri.IsAbsoluteUri)
            {
                if (!string.Equals(uri.Scheme, "https", StringComparison.OrdinalIgnoreCase))
                {
                    throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonUnsupportedUrlScheme(name, url)));
                }
            }
            else if (ExtensionInstallScope.Default != extensionScope)
            {
                throw new OwaExtensionOperationException(Strings.ErrorInvalidManifestData(Strings.ErrorReasonUrlMustBeAbsolute(name, url)));
            }
            return(uri);
        }
        // Token: 0x06000A7C RID: 2684 RVA: 0x0002904C File Offset: 0x0002724C
        internal static SchemaParser GetSchemaParser(SafeXmlDocument xmlDoc, ExtensionInstallScope scope)
        {
            string text;
            string schemaVersion;

            if (!ExtensionDataHelper.TryGetOfficeAppSchemaInfo(xmlDoc, "http://schemas.microsoft.com/office/appforoffice/", out text, out schemaVersion))
            {
                throw new OwaExtensionOperationException(Strings.ErrorReasonManifestSchemaUnknown);
            }
            string a;

            if ((a = text) != null)
            {
                if (a == "http://schemas.microsoft.com/office/appforoffice/1.0")
                {
                    return(new SchemaParser1_0(xmlDoc, scope));
                }
                if (a == "http://schemas.microsoft.com/office/appforoffice/1.1")
                {
                    return(new SchemaParser1_1(xmlDoc, scope));
                }
            }
            throw new OwaExtensionOperationException(Strings.ErrorReasonManifestVersionNotSupported(schemaVersion, ExchangeSetupContext.InstalledVersion));
        }
 public SchemaParser1_1(SafeXmlDocument xmlDoc, ExtensionInstallScope extensionInstallScope) : base(xmlDoc, extensionInstallScope)
 {
 }
 internal static void ExtensionGetPostAction(bool isOrgScope, DataRow inputRow, DataTable dataTable, DataObjectStore store)
 {
     foreach (object obj in dataTable.Rows)
     {
         DataRow       dataRow       = (DataRow)obj;
         ExtensionType extensionType = (ExtensionType)dataRow["Type"];
         if (ExtensionType.MarketPlace == extensionType)
         {
             dataRow["IsMarketplaceExtension"] = true;
             string text = string.Format("{0}?app={1}&ver={2}&clid={3}&p1={4}&p2={5}&p3={6}&p4={7}&p5={8}&Scope={9}&CallBackURL={10}&DeployId={11}", new object[]
             {
                 ExtensionUtility.MarketplaceLandingPageUrl,
                 ExtensionUtility.Application,
                 ExtensionUtility.Version,
                 Util.GetLCIDInDecimal(),
                 ExtensionUtility.ClientFullVersion,
                 ExtensionUtility.ClickContext,
                 ExtensionUtility.DefaultInputForQueryString,
                 ExtensionUtility.EndNodeTargetCode,
                 dataRow["MarketplaceContentmarket"] + "\\" + dataRow["MarketplaceAssetID"],
                 isOrgScope ? ExtensionUtility.OrganizationInstallScope : ExtensionUtility.UserInstallScope,
                 isOrgScope ? ExtensionUtility.UrlEncodedOfficeCallBackUrlForOrg : ExtensionUtility.UrlEncodedOfficeCallBackUrl,
                 ExtensionUtility.DeploymentId
             });
             string myAppsPageLink = string.Format("{0}?app={1}&ver={2}&clid={3}&p1={4}&p2={5}&p3={6}&p4={7}&p5={8}&Scope={9}&CallBackURL={10}&DeployId={11}", new object[]
             {
                 ExtensionUtility.MyAppsPageUrl,
                 ExtensionUtility.Application,
                 ExtensionUtility.Version,
                 Util.GetLCIDInDecimal(),
                 ExtensionUtility.ClientFullVersion,
                 ExtensionUtility.ClickContext,
                 ExtensionUtility.DefaultInputForQueryString,
                 ExtensionUtility.EndNodeTargetCode,
                 dataRow["MarketplaceContentmarket"] + "\\" + dataRow["MarketplaceAssetID"],
                 isOrgScope ? ExtensionUtility.OrganizationInstallScope : ExtensionUtility.UserInstallScope,
                 isOrgScope ? ExtensionUtility.UrlEncodedOfficeCallBackUrlForOrg : ExtensionUtility.UrlEncodedOfficeCallBackUrl,
                 ExtensionUtility.DeploymentId
             });
             string directCallbackLink = string.Format("{0}&Scope={1}&lc={2}&clientToken={3}&AssetId={4}", new object[]
             {
                 isOrgScope?ExtensionUtility.OfficeCallBackUrlForOrg: ExtensionUtility.OfficeCallBackUrl,
                 isOrgScope ? ExtensionUtility.OrganizationInstallScope : ExtensionUtility.UserInstallScope,
                 dataRow["MarketplaceContentmarket"],
                 dataRow["Etoken"],
                 dataRow["MarketplaceAssetID"]
             });
             dataRow["DetailsUrl"] = text;
             dataRow["ReviewUrl"]  = string.Format("{0}?app={1}&ver={2}&clid={3}&p1={4}&p2={5}&p3={6}&p4={7}&p5={8}&Scope={9}&CallBackURL={10}&DeployId={11}", new object[]
             {
                 ExtensionUtility.MarketplaceLandingPageUrl,
                 ExtensionUtility.Application,
                 ExtensionUtility.Version,
                 Util.GetLCIDInDecimal(),
                 ExtensionUtility.ClientFullVersion,
                 ExtensionUtility.ClickContext,
                 ExtensionUtility.DefaultInputForQueryString,
                 ExtensionUtility.ReviewsTargetCode,
                 dataRow["MarketplaceContentMarket"] + "\\" + dataRow["MarketplaceAssetID"],
                 isOrgScope ? ExtensionUtility.OrganizationInstallScope : ExtensionUtility.UserInstallScope,
                 isOrgScope ? ExtensionUtility.UrlEncodedOfficeCallBackUrlForOrg : ExtensionUtility.UrlEncodedOfficeCallBackUrl,
                 ExtensionUtility.DeploymentId
             });
             string text2 = (dataRow["AppStatus"] != null && !DBNull.Value.Equals(dataRow["AppStatus"])) ? ((string)dataRow["AppStatus"]) : string.Empty;
             if (!string.IsNullOrWhiteSpace(text2))
             {
                 dataRow["ShowNotification"] = true;
                 ExtensionUtility.SetErrorDescriptionAndNotificationLink(text2, dataRow, text, directCallbackLink, myAppsPageLink);
             }
             string value = (dataRow["LicenseType"] != null && !DBNull.Value.Equals(dataRow["LicenseType"])) ? ((string)dataRow["LicenseType"]) : string.Empty;
             if (Microsoft.Exchange.Management.Extension.LicenseType.Trial.ToString().Equals(value, StringComparison.OrdinalIgnoreCase))
             {
                 dataRow["ShowTrialReminder"]           = true;
                 dataRow["TrialReminderActionLinkUrl"]  = text;
                 dataRow["ShowTrialReminderActionLink"] = true;
             }
         }
         ExtensionInstallScope extensionInstallScope = (ExtensionInstallScope)dataRow["Scope"];
         if (isOrgScope)
         {
             dataRow["ExtensionCanBeUninstalled"] = (extensionInstallScope == ExtensionInstallScope.Organization);
             dataRow["ShowEnableDisable"]         = true;
         }
         else
         {
             dataRow["ExtensionCanBeUninstalled"] = (extensionInstallScope == ExtensionInstallScope.User);
             DefaultStateForUser?defaultStateForUser = dataRow["DefaultStateForUser"] as DefaultStateForUser?;
             if (defaultStateForUser != null && defaultStateForUser.Value == DefaultStateForUser.AlwaysEnabled)
             {
                 dataRow["ExtensionCanNotBeUninstalledMessage"] = OwaOptionStrings.ExtensionCanNotBeDisabledNorUninstalled;
                 dataRow["ShowEnableDisable"] = false;
             }
             else
             {
                 dataRow["ExtensionCanNotBeUninstalledMessage"] = OwaOptionStrings.ExtensionCanNotBeUninstalled;
                 dataRow["ShowEnableDisable"] = true;
             }
             if (extensionInstallScope == ExtensionInstallScope.Organization)
             {
                 dataRow["ShowNotificationLink"]        = false;
                 dataRow["ShowTrialReminderActionLink"] = false;
             }
         }
         if (dataRow["IconURL"].IsNullValue())
         {
             string themeResource = ThemeResource.GetThemeResource(ExtensionUtility.pagesSection.Theme, "extensiondefaulticon.png");
             dataRow["IconURL"] = new Uri(themeResource);
         }
     }
 }