public virtual ActionResult FileStore(FileStoreModel m) { if (ModelState.IsValid) { using (DiscoDataContext database = new DiscoDataContext()) { database.DiscoConfiguration.DataStoreLocation = m.FileStoreLocation; database.SaveChanges(); // Extract DataStore Template into FileStore var templatePath = Server.MapPath("~/ClientBin/DataStoreTemplate.zip"); if (System.IO.File.Exists(templatePath)) { try { using (ZipArchive templateArchive = ZipFile.Open(templatePath, ZipArchiveMode.Read)) { foreach (var entry in templateArchive.Entries) { var entryDestinationPath = Path.Combine(m.FileStoreLocation, entry.FullName); if (System.IO.File.Exists(entryDestinationPath)) System.IO.File.Delete(entryDestinationPath); } templateArchive.ExtractToDirectory(m.FileStoreLocation); } } catch (Exception ex) { ModelState.AddModelError(string.Empty, string.Format("Unable to extract File Store template: [{0}] {1}", ex.GetType().Name, ex.Message)); } } // Initialize Core Environment AppConfig.InitalizeCoreEnvironment(database); } return RedirectToAction(MVC.InitialConfig.Administrators()); } m.ExpandDirectoryModel(); return View(m); }
public virtual ActionResult FileStore() { // Try and retrieve FileStore path from DB string FileStoreLocation = null; try { using (DiscoDataContext database = new DiscoDataContext()) FileStoreLocation = database.ConfigurationItems.Where(ci => ci.Scope == "System" && ci.Key == "DataStoreLocation").Select(ci => ci.Value).FirstOrDefault(); } catch (Exception) { } // Ignore All Errors FileStoreModel m = new FileStoreModel(); // Test for valid Format if (!string.IsNullOrEmpty(FileStoreLocation)) if (!Regex.IsMatch(FileStoreLocation, @"^[A-z]:(\\[^\\/:*?""<>|0x0-0x1F]+)+(\\)?$", RegexOptions.Singleline)) FileStoreLocation = null; m.FileStoreLocation = FileStoreLocation; if (m.FileStoreLocation != null && m.FileStoreLocation.EndsWith(@"\")) m.FileStoreLocation = m.FileStoreLocation.TrimEnd('\\'); m.ExpandDirectoryModel(); return View(m); }