public virtual ActionResult Restore(string ID) { try { // Fetch database info. RestoreSubmission restoreSubmission = new RestoreSubmission(); DatabaseInfo database = MgmtMdl.GetDatabase(ID); restoreSubmission.Database = database; // Preset form. restoreSubmission.Method = "Select"; restoreSubmission.Backups = MgmtMdl.GetBackups(User.Identity.GetADUsername(), database.Name, database.Host, restoreSubmission.Database.Host.Protocol.ToLower()); restoreSubmission.Backups.Insert(0, new SelectListItem { Text = "Select a Backup", Value = "default" }); // Verify user privileges. if (database.Owner != User.Identity.GetADUsername()) { System.Web.HttpContext.Current.Session["StatusMessage"] = "You do not have permisson to access the <strong>" + database.Name + "</strong> database."; return(RedirectToAction("Index", "View")); } return(View("Restore", restoreSubmission)); } catch (Exception e) { System.Web.HttpContext.Current.Session["ErrorInfo"] = e.ToString(); return(RedirectToAction("Error", "View")); } }
public virtual ActionResult Restore(RestoreSubmission restoreSubmission, string ID) { try { // Reattach database info to submission. restoreSubmission.Database = MgmtMdl.GetDatabase(ID); restoreSubmission.Backups = MgmtMdl.GetBackups(User.Identity.GetADUsername(), restoreSubmission.Database.Name, restoreSubmission.Database.Host, restoreSubmission.Database.Host.Protocol.ToLower()); restoreSubmission.Backups.Insert(0, new SelectListItem { Text = "Select a Backup", Value = "default" }); // Verify data. if (!ModelState.IsValid) // Invalid HTML form. { return(View(restoreSubmission)); } if (restoreSubmission.Method == "Select" && restoreSubmission.FilePath == "default") // No backup selected. { System.Web.HttpContext.Current.Session["StatusMessage"] = "No backup file selected."; return(View(restoreSubmission)); } if (restoreSubmission.Method == "Upload") { if (restoreSubmission.File == null) // No backup selected. { System.Web.HttpContext.Current.Session["StatusMessage"] = "No backup file uploaded."; return(View(restoreSubmission)); } if (restoreSubmission.File.ContentLength == 0) // Empty backup selected. { System.Web.HttpContext.Current.Session["StatusMessage"] = "Empty file uploaded. Please select a valid " + restoreSubmission.Database.Host.Protocol + " file."; return(View(restoreSubmission)); } if (Path.GetExtension(restoreSubmission.File.FileName) != ("." + restoreSubmission.Database.Host.Protocol.ToLower())) // Invalid file extension. { System.Web.HttpContext.Current.Session["StatusMessage"] = "Invalid file uploaded. Please select a valid " + restoreSubmission.Database.Host.Protocol + " file."; return(View(restoreSubmission)); } } // Extract backup file path. string filepath = ""; if (restoreSubmission.Method == "Select") { filepath = @"Backups\" + User.Identity.GetADUsername() + @"\" + restoreSubmission.FilePath; } // Save file, if needed. if (restoreSubmission.Method == "Upload") { string filename = Path.GetFileName(restoreSubmission.File.FileName); string savepath = Path.Combine(Server.MapPath("/Tmp/Uploads/" + filename)); restoreSubmission.File.SaveAs(savepath); filepath = @"Tmp\Uploads\" + filename; } // Attempt to restore the database. IntfcMdl.Restore(restoreSubmission, filepath); // Redirect and display success message. System.Web.HttpContext.Current.Session["StatusMessage"] = "The database <strong>" + restoreSubmission.Database.Name + "</strong> was restored using <strong>" + Path.GetFileName(filepath) + "</strong>."; System.Web.HttpContext.Current.Session["StatusStyle"] = "success"; return(RedirectToAction("Database", "View", new { id = restoreSubmission.Database.DatabaseID })); } catch (Exception e) { System.Web.HttpContext.Current.Session["ErrorInfo"] = e.ToString(); return(RedirectToAction("Error", "View")); } }