// [HttpPost] public async Task <ActionResult> Backup_Fmt(string id, string format = "json") { var bk = await BackupsManager.BackupDatabase( GetBackupsConnectionString(), id, Logger ); if (string.IsNullOrWhiteSpace(format)) { return(HttpNotAcceptable(__("No format specified"))); } if (!IsDatabaseAuthorized(User, id)) { return(HttpNotAuthorized()); } if (bk == null) { return(HttpNotFound(string.Format(__("Unable to create database backup for '{0}'"), id))); } // Zip hook, direct backup and return result if (format.ToLowerInvariant() == @"zip") { var path = bk.Path; var fileName = Path.GetFileName(path); return(File(path, "application/zip", fileName)); } return(FormatResult(format, bk)); }
/** * Index */ public async Task <ActionResult> Index() { var bks = DbContext.History .AsEnumerable() .Where(_ => IsDatabaseAuthorized(User, _.Database)) .OrderBy(_ => _.Id); var dbInfo = await BackupsManager.GetDatabasesInfo(User); return(View(new IndexViewModel(dbInfo, bks))); }
public ActionResult BackupsPurge() { if (BackupsManager.PurgeOldBackups(DbContext, DateTime.Now, Logger)) { AddFlashMessage(__("Outdated backups successfully purged"), FlashMessageType.Success); } else { AddFlashMessage(__("An error occurred during purging"), FlashMessageType.Error); } return(RedirectToAction("Index")); }
public ActionResult Delete(int id) { var bk = DbContext.History.Find(id); if (bk == null) { return(HttpNotFound(__("Not a valid backup id"))); } if (!User.IsInRole("Admin") && !User.IsInRole("Operator")) { var bkName = bk.Username; var uName = User.Identity.Name; if (bkName == null || uName == null || (bkName.ToLowerInvariant() != User.Identity.Name.ToLowerInvariant())) { return(HttpNotAuthorized()); } } if (BackupsManager.DeleteBackup(DbContext, bk, Logger)) { try { DbContext.SaveChanges(); if (Request.IsAjaxRequest()) { return(Content(@"OK", "text/plain")); } AddFlashMessage(__("Backup successfully deleted"), FlashMessageType.Success); return(RedirectToAction("Index")); } catch (Exception ex) { Logger.ErrorException(__("While saving database changes"), ex); } } if (Request.IsAjaxRequest()) { return(Content(@"ERR", "text/plain")); } AddFlashMessage(__("An error occurred while deleting backup."), FlashMessageType.Error); return(RedirectToAction("Index")); }
public async Task <ActionResult> Backup(string id) { if (!IsDatabaseAuthorized(User, id)) { AddFlashMessage(MessageUnauthorizedDatabase, FlashMessageType.Error); return(RedirectToAction("Index")); } var bk = await BackupsManager.BackupDatabase( GetBackupsConnectionString(), id, Logger ); if (bk == null) { return(HttpNotFound(string.Format(__("Unable to create database backup for '{0}'"), id))); } return(PartialView("_BackupItem", bk)); }
protected static string GetBackupsConnectionString() { return(BackupsManager.GetBackupsConnectionString()); }
/** * Database list as a service */ public async Task <ActionResult> List_Fmt(string format = "json") { var dbInfo = await BackupsManager.GetDatabasesInfo(User); return(FormatResult(format, dbInfo)); }
/// <summary> /// Is the current <see cref="user"/> authorized to access the database ? /// </summary> /// <param name="user"><see cref="IPrincipal"/> to test</param> /// <param name="database">Database name</param> /// <returns>true or false</returns> protected bool IsDatabaseAuthorized(IPrincipal user, string database) { return(BackupsManager.IsDatabaseAuthorized(DbContext, user, database)); }