From c67f0baf74205bd855f6e8bda3b83715cb8f99f6 Mon Sep 17 00:00:00 2001 From: jakobdyrby Date: Thu, 5 Jun 2014 11:07:17 +0200 Subject: [PATCH] Method renaming and zip allowed --- build/NuSpecs/build/UmbracoCms.targets | 92 +++++++-------- src/Umbraco.Core/Constants-Packaging.cs | 107 +++++++++--------- src/Umbraco.Core/Packaging/UnpackHelper.cs | 9 +- .../Netmester.BestPractice.Base_0.0.0.1.umb | Bin 0 -> 6634 bytes .../Services/PackageInstallerServiceTest.cs | 18 ++- 5 files changed, 121 insertions(+), 105 deletions(-) create mode 100644 src/Umbraco.Tests/Packages/Netmester.BestPractice.Base_0.0.0.1.umb diff --git a/build/NuSpecs/build/UmbracoCms.targets b/build/NuSpecs/build/UmbracoCms.targets index 024d8af7ad..b057ce5202 100644 --- a/build/NuSpecs/build/UmbracoCms.targets +++ b/build/NuSpecs/build/UmbracoCms.targets @@ -1,50 +1,50 @@ - - - - - $(MSBuildThisFileDirectory)..\UmbracoFiles\ - - - - - - - - - - - App_Browsers - - - App_Code - - - App_Plugins - - - bin\amd64 - - - bin\x86 - - - Config\Splashes - + + + + + $(MSBuildThisFileDirectory)..\UmbracoFiles\ + + + + + + + + + + + App_Browsers + + + App_Code + + + App_Plugins + + + bin\amd64 + + + bin\x86 + + + Config\Splashes + data - - umbraco - - - umbraco_client - - - . - - - %(CustomFilesToInclude.Dir)\%(RecursiveDir)%(Filename)%(Extension) - - - + + umbraco + + + umbraco_client + + + . + + + %(CustomFilesToInclude.Dir)\%(RecursiveDir)%(Filename)%(Extension) + + + \ No newline at end of file diff --git a/src/Umbraco.Core/Constants-Packaging.cs b/src/Umbraco.Core/Constants-Packaging.cs index ef68b2a656..0beb034508 100644 --- a/src/Umbraco.Core/Constants-Packaging.cs +++ b/src/Umbraco.Core/Constants-Packaging.cs @@ -1,56 +1,53 @@ -using System.Xml.Linq; - -namespace Umbraco.Core -{ - public static partial class Constants - { - /// - /// Defines the constants used for Umbraco packages in the package.config xml - /// - public static class Packaging - { - public const string UmbPackageNodeName = "umbPackage"; - public const string DataTypesNodeName = "DataTypes"; - public const string PackageXmlFileName = "package.xml"; - public const string UmbracoPackageExtention = ".umb"; - public const string DataTypeNodeName = "DataType"; - public const string LanguagesNodeName = "Languages"; - public const string FilesNodeName = "files"; - public const string StylesheetsNodeName = "Stylesheets"; - public const string TemplatesNodeName = "Templates"; - public const string NameNodeName = "Name"; - public const string TemplateNodeName = "Template"; - public const string AliasNodeNameSmall = "alias"; - public const string AliasNodeNameCapital = "Alias"; - public const string DictionaryItemsNodeName = "DictionaryItems"; - public const string DictionaryItemNodeName = "DictionaryItem"; - public const string MacrosNodeName = "Macros"; - public const string DocumentSetNodeName = "DocumentSet"; - public const string DocumentTypesNodeName = "DocumentTypes"; - public const string DocumentTypeNodeName = "DocumentType"; - public const string FileNodeName = "file"; - public const string OrgNameNodeName = "orgName"; - public const string OrgPathNodeName = "orgPath"; - public const string GuidNodeName = "guid"; - public const string StylesheetNodeName = "styleSheet"; - public const string MacroNodeName = "macro"; - public const string InfoNodeName = "info"; - public const string PackageRequirementsMajorXpath = "./package/requirements/major"; - public const string PackageRequirementsMinorXpath = "./package/requirements/minor"; - public const string PackageRequirementsPatchXpath = "./package/requirements/patch"; - public const string PackageNameXpath = "./package/name"; - public const string PackageVersionXpath = "./package/version"; - public const string PackageUrlXpath = "./package/url"; - public const string PackageLicenseXpath = "./package/license"; - public const string AuthorNameXpath = "./author/name"; - public const string AuthorWebsiteXpath = "./author/website"; - public const string ReadmeXpath = "./readme"; - public const string ControlNodeName = "control"; - public const string ActionNodeName = "Action"; - public const string ActionsNodeName = "Actions"; - public const string UndoNodeAttribute = "undo"; - public const string RunatNodeAttribute = "runat"; - - } - } +namespace Umbraco.Core +{ + public static partial class Constants + { + /// + /// Defines the constants used for Umbraco packages in the package.config xml + /// + public static class Packaging + { + public static readonly string UmbPackageNodeName = "umbPackage"; + public static readonly string DataTypesNodeName = "DataTypes"; + public static readonly string PackageXmlFileName = "package.xml"; + public static readonly string UmbracoPackageExtention = ".umb"; + public static readonly string DataTypeNodeName = "DataType"; + public static readonly string LanguagesNodeName = "Languages"; + public static readonly string FilesNodeName = "files"; + public static readonly string StylesheetsNodeName = "Stylesheets"; + public static readonly string TemplatesNodeName = "Templates"; + public static readonly string NameNodeName = "Name"; + public static readonly string TemplateNodeName = "Template"; + public static readonly string AliasNodeNameSmall = "alias"; + public static readonly string AliasNodeNameCapital = "Alias"; + public static readonly string DictionaryItemsNodeName = "DictionaryItems"; + public static readonly string DictionaryItemNodeName = "DictionaryItem"; + public static readonly string MacrosNodeName = "Macros"; + public static readonly string DocumentSetNodeName = "DocumentSet"; + public static readonly string DocumentTypesNodeName = "DocumentTypes"; + public static readonly string DocumentTypeNodeName = "DocumentType"; + public static readonly string FileNodeName = "file"; + public static readonly string OrgNameNodeName = "orgName"; + public static readonly string OrgPathNodeName = "orgPath"; + public static readonly string GuidNodeName = "guid"; + public static readonly string StylesheetNodeName = "styleSheet"; + public static readonly string MacroNodeName = "macro"; + public static readonly string InfoNodeName = "info"; + public static readonly string PackageRequirementsMajorXpath = "./package/requirements/major"; + public static readonly string PackageRequirementsMinorXpath = "./package/requirements/minor"; + public static readonly string PackageRequirementsPatchXpath = "./package/requirements/patch"; + public static readonly string PackageNameXpath = "./package/name"; + public static readonly string PackageVersionXpath = "./package/version"; + public static readonly string PackageUrlXpath = "./package/url"; + public static readonly string PackageLicenseXpath = "./package/license"; + public static readonly string AuthorNameXpath = "./author/name"; + public static readonly string AuthorWebsiteXpath = "./author/website"; + public static readonly string ReadmeXpath = "./readme"; + public static readonly string ControlNodeName = "control"; + public static readonly string ActionNodeName = "Action"; + public static readonly string ActionsNodeName = "Actions"; + public static readonly string UndoNodeAttribute = "undo"; + public static readonly string RunatNodeAttribute = "runat"; + } + } } \ No newline at end of file diff --git a/src/Umbraco.Core/Packaging/UnpackHelper.cs b/src/Umbraco.Core/Packaging/UnpackHelper.cs index 0ad5397d32..970e0c85a0 100644 --- a/src/Umbraco.Core/Packaging/UnpackHelper.cs +++ b/src/Umbraco.Core/Packaging/UnpackHelper.cs @@ -10,7 +10,6 @@ namespace Umbraco.Core.Packaging { public string ReadTextFileFromArchive(string packageFilePath, string fileToRead, out string directoryInPackage) { - string retVal = null; bool fileFound = false; string foundDir = null; @@ -56,11 +55,15 @@ namespace Umbraco.Core.Packaging throw new ArgumentException(string.Format("Package file: {0} could not be found", packageFilePath)); } + string extension = Path.GetExtension(packageFilePath).ToLower(); + + var alowedExtension = new[] {".umb", ".zip"}; + // Check if the file is a valid package - if (Path.GetExtension(packageFilePath).Equals(".umb", StringComparison.InvariantCultureIgnoreCase) == false) + if (alowedExtension.All(ae => ae.Equals(extension) == false)) { throw new ArgumentException( - "Error - file isn't a package (doesn't have a .umb extension). Check if the file automatically got named '.zip' upon download."); + string.Format("Error - file isn't a package. only extentions: \"{0}\" is allowed", string.Join(", ", alowedExtension))); } } diff --git a/src/Umbraco.Tests/Packages/Netmester.BestPractice.Base_0.0.0.1.umb b/src/Umbraco.Tests/Packages/Netmester.BestPractice.Base_0.0.0.1.umb new file mode 100644 index 0000000000000000000000000000000000000000..11610beb1e6957ee18c4121974ecd482d42d3ee7 GIT binary patch literal 6634 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