internal static ParseResultDto ParsePackageFile(PortalSettings PortalSettings, UserInfo UserInfo, string Type, string FileName)
        {
            string installFolder = GetPackageInstallFolder(Type);

            if (!string.IsNullOrEmpty(installFolder) && !string.IsNullOrEmpty(FileName))
            {
                string packagePath = Path.Combine(Globals.ApplicationMapPath, "Install", installFolder, FileName);
                if (File.Exists(packagePath))
                {
                    using (FileStream stream = new FileStream(packagePath, FileMode.Open))
                    {
                        try
                        {
                            return(InstallController.Instance.ParsePackage(PortalSettings, UserInfo, packagePath, stream));
                        }
                        catch (Exception ex)
                        {
                            DotNetNuke.Services.Exceptions.Exceptions.LogException(ex);
                        }
                    }
                }
            }
            ParseResultDto result = new ParseResultDto
            {
                NoManifest = true
            };

            return(result);
        }
        public HttpResponseMessage DownloadLanguagePackage(string cultureCode)
        {
            try
            {
                const string packageFileName = "installlanguage.resources";
                string       packagePath     = Path.Combine(Globals.ApplicationMapPath, "Install/Language/" + packageFileName);

                ParseResultDto parsePackage = new ParseResultDto();

                using (FileStream stream = new FileStream(packagePath, FileMode.Open))
                {
                    parsePackage = InstallController.Instance.ParsePackage(PortalSettings, UserInfo, packagePath, stream);
                }

                bool invalidPackage = !parsePackage.Success ||
                                      !parsePackage.PackageType.Equals("CoreLanguagePack") ||
                                      !parsePackage.Name.EndsWith(cultureCode, StringComparison.InvariantCultureIgnoreCase);

                if (invalidPackage)
                {
                    DotNetNuke.Services.Upgrade.Internals.InstallController.Instance.IsAvailableLanguagePack(cultureCode);
                }

                return(DownLoadFile(packagePath));
            }
            catch (Exception ex)
            {
                DotNetNuke.Services.Exceptions.Exceptions.LogException(ex);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
        public ActionResult ParsePackage()
        {
            ActionResult actionResult = new ActionResult();

            try
            {
                dynamic        files          = HttpContext.Current.Request.Files;
                HttpPostedFile file           = files[0];
                ParseResultDto ParseResultDto = InstallController.Instance.ParsePackage(PortalSettings, UserInfo, file.FileName, file.InputStream);
                actionResult.Data      = ParseResultDto;
                actionResult.IsSuccess = true;
                return(actionResult);
            }
            catch (Exception ex)
            {
                actionResult.AddError("internalError", ex.Message, ex);
                return(actionResult);
            }
        }
Ejemplo n.º 4
0
        public ParseResultDto ParsePackage(PortalSettings portalSettings, UserInfo user, string filePath, Stream stream)
        {
            var parseResult = new ParseResultDto();
            var fileName    = Path.GetFileName(filePath);
            var extension   = Path.GetExtension(fileName ?? "").ToLowerInvariant();

            if (extension != ".zip" && extension != ".resources")
            {
                parseResult.Failed("InvalidExt");
            }
            else
            {
                try
                {
                    var installer = GetInstaller(stream, fileName, portalSettings.PortalId);

                    try
                    {
                        if (installer.IsValid)
                        {
                            if (installer.Packages.Count > 0)
                            {
                                parseResult = new ParseResultDto(installer.Packages[0].Package);
                            }

                            parseResult.AzureCompact     = AzureCompact(installer).GetValueOrDefault(false);
                            parseResult.NoManifest       = string.IsNullOrEmpty(installer.InstallerInfo.ManifestFile.TempFileName);
                            parseResult.LegacyError      = installer.InstallerInfo.LegacyError;
                            parseResult.HasInvalidFiles  = !installer.InstallerInfo.HasValidFiles;
                            parseResult.AlreadyInstalled = installer.InstallerInfo.Installed;
                            parseResult.AddLogs(installer.InstallerInfo.Log.Logs);
                        }
                        else
                        {
                            if (installer.InstallerInfo.ManifestFile == null)
                            {
                                parseResult.LegacySkinInstalled      = CheckIfSkinAlreadyInstalled(fileName, installer, "Skin");
                                parseResult.LegacyContainerInstalled = CheckIfSkinAlreadyInstalled(fileName, installer, "Container");
                            }

                            parseResult.Failed("InvalidFile", installer.InstallerInfo.Log.Logs);
                            parseResult.NoManifest = string.IsNullOrEmpty(installer.InstallerInfo.ManifestFile?.TempFileName);
                            if (parseResult.NoManifest)
                            {
                                // we still can install when the manifest is missing
                                parseResult.Success = true;
                            }
                        }
                    }
                    finally
                    {
                        DeleteTempInstallFiles(installer);
                    }
                }
                catch (SharpZipBaseException)
                {
                    parseResult.Failed("ZipCriticalError");
                }
            }

            return(parseResult);
        }