示例#1
0
        //[ValidateAntiForgeryToken]
        public HttpResponseMessage InstallPackage(string packageUrl)
        {
            Log.Add("install package:" + packageUrl);
            var  zoneId = Env.ZoneMapper.GetZoneId(ActiveModule.PortalID);
            var  appId  = new DnnMapAppToInstance(Log).GetAppIdFromInstance(new DnnContainer(ActiveModule), zoneId);
            bool success;

            // Install package
            // var messages = new List<ExportImportMessage>();
            var helper = new DnnImportExportEnvironment(Log);

            try
            {
                // Increase script timeout to prevent timeouts
                HttpContext.Current.Server.ScriptTimeout = 300;

                success = new ZipFromUrlImport(helper, zoneId, appId, PortalSettings.UserInfo.IsSuperUser, Log)
                          .ImportUrl(packageUrl, ActiveModule.DesktopModule.ModuleName == "2sxc-app");
            }
            catch (Exception ex)
            {
                Exceptions.LogException(ex);
                throw new Exception("An error occurred while installing the app: " + ex.Message, ex);
            }

            Log.Add("install completed with success:" + success);
            return(Request.CreateResponse(success ? HttpStatusCode.OK : HttpStatusCode.InternalServerError, new { success, helper.Messages }));
        }
示例#2
0
        public ImportResult ImportContent()
        {
            Log.Add("import content start");
            var result = new ImportResult();

            var request = HttpContext.Current.Request;

            var allowSystemChanges = UserInfo.IsSuperUser;

            var appId  = int.Parse(request["AppId"]);
            var zoneId = int.Parse(request["ZoneId"]);

            if (request.Files.Count <= 0)
            {
                return(result);
            }

            var file = request.Files[0];

            if (file.FileName.EndsWith(".zip"))
            {   // ZIP
                try
                {
                    var env       = new DnnImportExportEnvironment(Log);
                    var zipImport = new ZipImport(env, zoneId, appId, PortalSettings.UserInfo.IsSuperUser, Log);
                    // Increase script timeout to prevent timeouts
                    HttpContext.Current.Server.ScriptTimeout = 300;
                    var temporaryDirectory = HttpContext.Current.Server.MapPath(Path.Combine(Eav.ImportExport.Settings.TemporaryDirectory, Guid.NewGuid().ToString()));
                    result.Succeeded = zipImport.ImportZip(file.InputStream, temporaryDirectory);
                    result.Messages  = env.Messages;
                }
                catch (Exception ex)
                {
                    Exceptions.LogException(ex);
                }
            }
            else
            {   // XML
                using (var fileStreamReader = new StreamReader(file.InputStream))
                {
                    var xmlImport   = new XmlImportWithFiles(Log, PortalSettings.DefaultLanguage, allowSystemChanges);
                    var xmlDocument = XDocument.Parse(fileStreamReader.ReadToEnd());
                    result.Succeeded = xmlImport.ImportXml(zoneId, appId, xmlDocument);
                    result.Messages  = xmlImport.Messages;
                }
            }
            return(result);
        }
示例#3
0
        public ImportResult ImportApp()
        {
            Log.Add("import app start");
            var result = new ImportResult();

            var request = HttpContext.Current.Request;

            var zoneId = int.Parse(request["ZoneId"]);

            if (request.Files.Count <= 0)
            {
                return(result);
            }

            var name = request["Name"];

            if (!string.IsNullOrEmpty(name))
            {
                Log.Add($"new app name: {name}");
            }

            var helper = new DnnImportExportEnvironment(Log);

            try
            {
                var zipImport          = new ZipImport(helper, zoneId, null, PortalSettings.UserInfo.IsSuperUser, Log);
                var temporaryDirectory = HttpContext.Current.Server.MapPath(Path.Combine(Eav.ImportExport.Settings.TemporaryDirectory, Guid.NewGuid().ToString().Substring(0, 8)));

                // Increase script timeout to prevent timeouts
                HttpContext.Current.Server.ScriptTimeout = 300;
                result.Succeeded = zipImport.ImportZip(request.Files[0].InputStream, temporaryDirectory, name);
                result.Messages  = helper.Messages;
            }
            catch (Exception ex)
            {
                Exceptions.LogException(ex);
                result.Succeeded = false;
                result.Messages  = helper.Messages;
            }
            return(result);
        }