public ActionResult NippsBackup(Models.Nipps nipps)
        {
            ViewBag.Title = Resources.Global.BackupTitle;

            string backupServiceUrl           = NippsSiteHelper.BuildDeploymentServiceUrl(nipps.HostName, "BackupService/BackupApplication");
            NippsPackageRequest backupRequest = new NippsPackageRequest
            {
                NippsPackages = new List <NippsPackage>
                {
                    new NippsPackage
                    {
                        ApplicationName = nipps.ApplicationName,
                        SiteName        = nipps.SiteName,
                        HostName        = nipps.HostName
                    }
                }
            };

            NippsPackageResponse backupResponse = RestHelper.RestPostObject <NippsPackageResponse, NippsPackageRequest>(backupServiceUrl, backupRequest);

            ViewBag.Result             = backupResponse.Result;
            ViewBag.ResultMessages     = backupResponse.ResultMessages;
            ViewBag.ReturnToAction     = ReturnToAction;
            ViewBag.ReturnToController = ReturnToController;
            ViewBag.Title = Resources.Global.BackupTitle;

            return(View(NippsSiteHelper.ResultMessageView));
        }
        public ActionResult NippsRestore(Models.Nipps nipps, string restore)
        {
            ViewBag.Title = Resources.Global.RestoreTitle;

            string restoreServiceUrl    = NippsSiteHelper.BuildDeploymentServiceUrl(nipps.HostName, "BackupService/RestoreApplication");
            NippsPackageRequest request = new NippsPackageRequest
            {
                NippsPackages = new List <NippsPackage>
                {
                    new NippsPackage
                    {
                        HostName            = nipps.HostName,
                        SiteName            = nipps.SiteName,
                        ApplicationName     = nipps.ApplicationName,
                        ApplicationPoolName = nipps.ApplicationPoolName,
                        PackageZIP          = restore
                    }
                }
            };

            NippsPackageResponse response = RestHelper.RestPostObject <NippsPackageResponse, NippsPackageRequest>(restoreServiceUrl, request);

            ViewBag.Result             = response.Result;
            ViewBag.ResultMessages     = response.ResultMessages;
            ViewBag.ReturnToAction     = ReturnToAction;
            ViewBag.ReturnToController = ReturnToController;
            ViewBag.Title = Resources.Global.RestoreTitle;

            return(View(NippsSiteHelper.ResultMessageView));
        }
        public NippsPackageResponse UpgradeApplicationList(NippsPackageRequest request)
        {
            NippsPackageResponse response = new NippsPackageResponse();
            string BackupTargetPath       = GetBackupTargetPath();

            response.Result         = Result.OK;
            response.ResultMessages = new List <string>();

            if (request != null && request.NippsPackages != null && request.NippsPackages.Count > 0)
            {
                foreach (string fileName in Directory.GetFiles(BackupTargetPath, "Upgr_" + request.NippsPackages[0].ApplicationName.Replace("/", "") + "*.zip", SearchOption.TopDirectoryOnly))
                {
                    response.ResultMessages.Add(fileName.Substring(BackupTargetPath.Length));
                }
            }
            else
            {
                foreach (string fileName in Directory.GetFiles(BackupTargetPath, "Upgr_*.zip", SearchOption.TopDirectoryOnly))
                {
                    response.ResultMessages.Add(fileName.Substring(BackupTargetPath.Length));
                }
            }

            return(response);
        }
        public ActionResult NippsUpgradeList(Models.Nipps nipps)
        {
            string upgradeServiceUrl    = NippsSiteHelper.BuildDeploymentServiceUrl(nipps.HostName, "BackupService/UpgradeApplicationList");
            NippsPackageRequest request = new NippsPackageRequest
            {
                NippsPackages = new List <NippsPackage>()
            };

            if (!String.IsNullOrEmpty(nipps.HostName))
            {
                request.NippsPackages.Add(new NippsPackage
                {
                    HostName        = nipps.HostName,
                    SiteName        = nipps.SiteName,
                    ApplicationName = nipps.ApplicationName
                });
            }

            NippsPackageResponse response = RestHelper.RestPostObject <NippsPackageResponse, NippsPackageRequest>(upgradeServiceUrl, request);

            ViewBag.ResultList = response.ResultMessages;
            SetViewBagResult(response, ViewBag);

            return(View(nipps));
        }
        public NippsPackageResponse RestoreApplicationList(NippsPackageRequest request)
        {
            NippsPackageResponse response = new NippsPackageResponse();
            string BackupTargetPath       = GetBackupTargetPath();

            response.Result         = Result.OK;
            response.ResultMessages = new List <string>();

            if (request != null && request.NippsPackages != null && request.NippsPackages.Count > 0)
            {
                foreach (NippsPackage np in request.NippsPackages)
                {
                    foreach (string fileName in Directory.GetFiles(BackupTargetPath, "Appl_" + ZipFileName(np, false).Replace(".zip", "*.zip"), SearchOption.TopDirectoryOnly))
                    {
                        response.ResultMessages.Add(fileName.Substring(BackupTargetPath.Length));
                    }
                }
            }
            else
            {
                foreach (string fileName in Directory.GetFiles(BackupTargetPath, "Site_*.zip", SearchOption.TopDirectoryOnly))
                {
                    response.ResultMessages.Add(fileName.Substring(BackupTargetPath.Length));
                }
            }

            return(response);
        }
        public NippsPackageResponse UpgradeApplication(NippsPackageRequest request)
        {
            NippsPackageResponse response = new NippsPackageResponse();

            response.Result         = Result.OK;
            response.ResultMessages = new List <string>();

            _Logger.Info("Checking for upgrade {0}", request);

            if (request == null || request.NippsPackages == null || request.NippsPackages.Count == 0)
            {
                response.ResultMessages.Add("ArgumentNullException: NippsPackages is null or empty.");
                return(response);
            }

            //backup the current version,
            NippsPackageResponse backupResponse = BackupApplication(request);

            _Logger.Info("Starting to upgrade {0} with {1}", request, request.NippsPackages[0].PackageZIP);
            //restore the upgraded version
            NippsPackageResponse restoreResponse = RestoreApplication(request);

            _Logger.Info("Starting to execute upgrade.sql {0}", request);
            //execute upgrade.sql, if exist in the zip

            return(response);
        }
Exemple #7
0
        public ActionResult NippsDeploy(HttpPostedFileBase PackageZIP, Models.Nipps nipps)
        {
            string deploymentServiceUrl = NippsSiteHelper.BuildDeploymentServiceUrl(nipps.HostName) + "AddSite";

            byte[] packageZipBuffer = new byte[PackageZIP.ContentLength];
            PackageZIP.InputStream.Read(packageZipBuffer, 0, PackageZIP.ContentLength);

            string b64Package = Convert.ToBase64String(packageZipBuffer);

            NippsPackageRequest nippsPackageRequest = new NippsPackageRequest
            {
                NippsPackages = new List <NippsPackage>
                {
                    new NippsPackage {
                        PackageZIP          = b64Package,
                        SiteName            = nipps.SiteName,
                        HostName            = nipps.HostName,
                        ApplicationPoolName = nipps.ApplicationPoolName,
                        ApplicationName     = nipps.ApplicationName
                    }
                }
            };

            NippsPackageResponse response = RestHelper.RestPostObject <NippsPackageResponse, NippsPackageRequest>(deploymentServiceUrl, nippsPackageRequest);

            if (response.Result == Result.OK)
            {
                return(RedirectToAction("NippsServiceList"));
            }

            foreach (String em in response.ResultMessages)
            {
                Logger.Error(em);
            }

            ViewBag.Result             = response.Result;
            ViewBag.ResultMessages     = response.ResultMessages;
            ViewBag.ReturnToAction     = ReturnToAction;
            ViewBag.ReturnToController = ReturnToController;
            ViewBag.Title = Resources.Global.DeployTitle;

            return(View(NippsSiteHelper.ResultMessageView));
        }
        public BaseResponse RestoreConfiguration(NippsPackageRequest request)
        {
            BaseResponse response = new NippsPackageResponse();

            response.ResultMessages = new List <string>();

            try
            {
                if (request != null && request.NippsPackages != null && request.NippsPackages.Count > 0)
                {
                    string bcpExe           = GetBcpExe();
                    string connectionString = ConfigurationManager.ConnectionStrings["UpgradeDb"].ConnectionString;

                    string dataBase = Regex.Match(connectionString, @"(Initial Catalog=)(\w+)").Value.Replace("Initial Catalog=", "");
                    string userName = Regex.Match(connectionString, @"(User ID=)(\w+)").Value.Replace("User ID=", "");
                    string passWord = Regex.Match(connectionString, @"(Password=)(\w+)").Value.Replace("Password="******"");
                    string host     = Regex.Match(connectionString, @"(Data Source=)(\w+)").Value.Replace("Data Source=", "");
                    string sqlArgs  = string.Format("-c -C RAW -S {0} -d {1} -U {2} -P {3}", host, dataBase, userName, passWord);

                    foreach (NippsPackage np in request.NippsPackages)
                    {
                        response.ResultMessages.Add(
                            string.Format(
                                "restore {0} exit code -> {1}",
                                np.PackageZIP,
                                ConfigurationRestore(bcpExe, sqlArgs, Regex.Match(np.PackageZIP, "(_)(.*)(_)").Value.Replace("_", ""), np.PackageZIP)
                                )
                            );
                    }
                }
                response.Result = Result.OK;
            }
            catch (Exception ex)
            {
                response.Result = Result.FAIL;
                response.ResultMessages.Add(ex.ToString());
            }

            return(response);
        }
        public NippsPackageResponse RestoreApplication(NippsPackageRequest request)
        {
            NippsPackageResponse response = new NippsPackageResponse();

            response.Result         = Result.OK;
            response.ResultMessages = new List <string>();

            _Logger.Debug(request);

            foreach (NippsPackage np in request.NippsPackages)
            {
                if (String.IsNullOrEmpty(np.ApplicationName))
                {
                    np.ApplicationName = "/"; //site restore
                }
                _Logger.Debug(np);

                response.ResultMessages
                .Add(ApplicationRestore(np));
            }

            return(response);
        }
        public NippsPackageResponse BackupApplication(NippsPackageRequest request)
        {
            NippsPackageResponse response = new NippsPackageResponse();
            bool   succeededOne           = false;
            string BackupTargetPath       = GetBackupTargetPath();

            response.ResultMessages = new List <string>();
            response.Result         = Result.OK;

            _Logger.Debug(request.ToString());

            foreach (NippsPackage np in request.NippsPackages)
            {
                try
                {
                    if (String.IsNullOrEmpty(np.ApplicationName))
                    {
                        np.ApplicationName = "/"; //site backup
                    }
                    response.ResultMessages
                    .Add(ApplicationBackup(np));

                    succeededOne = true;
                }
                catch (Exception ex)
                {
                    if (succeededOne)
                    {
                        response.Result = Result.SUCCESSWITHWARN;
                    }

                    response.ResultMessages.Add(ex.ToString());
                }
            }

            return(response);
        }
        public BaseResponse BackupConfiguration()
        {
            BaseResponse response = new NippsPackageResponse();

            response.ResultMessages = new List <string>();

            try
            {
                string targetPath       = GetBackupTargetPath();
                string bcpExe           = GetBcpExe();
                string connectionString = ConfigurationManager.ConnectionStrings["UpgradeDb"].ConnectionString;

                string dataBase = Regex.Match(connectionString, @"(Initial Catalog=)(\w+)").Value.Replace("Initial Catalog=", "");
                string userName = Regex.Match(connectionString, @"(User ID=)(\w+)").Value.Replace("User ID=", "");
                string passWord = Regex.Match(connectionString, @"(Password=)(\w+)").Value.Replace("Password="******"");
                string host     = Regex.Match(connectionString, @"(Data Source=)(\w+)").Value.Replace("Data Source=", "");
                string sqlArgs  = string.Format("-c -C RAW -S {0} -d {1} -U {2} -P {3}", host, dataBase, userName, passWord);

                //take the schema&table name from system parameter service,
                response.ResultMessages.Add(string.Format("auth.Users exit code -> {0}", ConfigurationBackup(bcpExe, sqlArgs, "auth.Users", targetPath)));

                response.ResultMessages.Add(string.Format("log.NippsModules exit code -> {0}", ConfigurationBackup(bcpExe, sqlArgs, "log.NippsModules", targetPath)));

                response.ResultMessages.Add(string.Format("conf.ParameterCategories exit code -> {0}", ConfigurationBackup(bcpExe, sqlArgs, "conf.ParameterCategories", targetPath)));

                response.ResultMessages.Add(string.Format("conf.SystemParameters exit code -> {0}", ConfigurationBackup(bcpExe, sqlArgs, "conf.SystemParameters", targetPath)));

                response.Result = Result.OK;
            }
            catch (Exception ex)
            {
                response.Result = Result.FAIL;
                response.ResultMessages.Add(ex.ToString());
            }

            return(response);
        }
        public BaseResponse RestoreConfigurationList()
        {
            BaseResponse response = new NippsPackageResponse();

            response.ResultMessages = new List <string>();

            try
            {
                string targetPath = GetBackupTargetPath();
                foreach (string fileName in Directory.GetFiles(targetPath, "DB_*.txt", SearchOption.TopDirectoryOnly))
                {
                    response.ResultMessages.Add(fileName);
                }

                response.Result = Result.OK;
            }
            catch (Exception ex)
            {
                response.Result = Result.FAIL;
                response.ResultMessages.Add(ex.ToString());
            }

            return(response);
        }
        public NippsPackageResponse AddSite(NippsPackageRequest nippsPackageRequest)
        {
            bool   isSucceededOne         = false;
            Logger logger                 = NLog.LogManager.GetCurrentClassLogger();
            NippsPackageResponse response = new NippsPackageResponse();

            response.ResultMessages = new List <string>();
            response.Result         = Result.OK;

            try
            {
                using (ServerManager serverManager = ServerManager.OpenRemote("localhost"))
                {
                    foreach (NippsPackage nippsPackage in nippsPackageRequest.NippsPackages)
                    {
                        try
                        {
                            Site site = serverManager.Sites
                                        .Where(s => s.Name.Equals(nippsPackage.SiteName))
                                        .Single();

                            if (site != null)
                            {
                                string basePath = SavePackage(nippsPackage, site);
                                string appPath  = basePath + nippsPackage.ApplicationName;

                                logger.Debug(string.Format("Application>{0}", appPath));

                                //execute SQL if exist
                                BaseDaoHelper.ExecuteUpgradeScript(appPath);

                                //add site
                                Application app = site.Applications.Add("/" + nippsPackage.ApplicationName, appPath.Replace("/", "\\"));
                                app.ApplicationPoolName = nippsPackage.ApplicationPoolName;

                                response.ResultMessages.Add(
                                    string.Format("[{0} - {1} - {2}]", nippsPackage.SiteName, nippsPackage.ApplicationPoolName, nippsPackage.ApplicationName));

                                isSucceededOne = true;
                            }
                        }
                        catch (Exception ex)
                        {
                            logger.Error(ex.ToString());
                            if (isSucceededOne)
                            {
                                response.Result = Result.SUCCESSWITHWARN;
                            }
                            response.ResultMessages.Add(ex.ToString());
                        }
                    }

                    if (isSucceededOne)
                    {
                        serverManager.CommitChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex.ToString());
                response.Result = Result.FAIL;
                response.ResultMessages.Add(ex.ToString());
            }

            return(response);
        }