public virtual async Task <ActionResult> Editor(FileServerModel model, bool?saveAndContinue) { if (!ModelState.IsValid) { return(View(model)); } var record = _fileServerModelFactory.PrepareTblFileServers(model); var recordId = model.Id; try { var server = _fileServersService.GetWebService(record); var result = await server.EnumerateFilesAsync("\\", "*.*", false, TimeSpan.Zero, 0).ConfigureAwait(false); server.Close(); } catch (Exception ex) { var errorCode = ErrorLog.GetDefault(System.Web.HttpContext.Current).Log(new Error(ex, System.Web.HttpContext.Current)); ModelState.AddModelError("", string.Format(_localizationService.GetResource("ErrorOnOperation"), ex.Message, errorCode)); return(View(model)); } try { if (model.Id == null) { //Add new record recordId = await _fileServersService.AddAsync(record); } else { //Edit record await _fileServersService.UpdateAsync(record); } } catch (Exception e) { var errorCode = ErrorLog.GetDefault(System.Web.HttpContext.Current).Log(new Error(e, System.Web.HttpContext.Current)); ModelState.AddModelError("", string.Format(_localizationService.GetResource("ErrorOnOperation"), e.Message, errorCode)); return(View(model)); } if (saveAndContinue != null && saveAndContinue.Value) { return(RedirectToAction("Editor", "ManageFileServers", new { id = recordId })); } return(Content(@"<script language='javascript' type='text/javascript'> window.close(); window.opener.refreshFileServersGrid(); </script>")); }
public virtual TblFileServers PrepareTblFileServers(FileServerModel fileServer) { var result = fileServer.Adapt <TblFileServers>(); return(result); }
public FtpBackup(Service service, string bucketName) : this( FileServerModel.DetermineFileServer(service, BackupType.Ftp), bucketName) { }
public async Task <ActionResult> BackupFile(int id, string file, BackupType backupType = BackupType.S3) { var service = Service.GetSelectedService(); var server = TCAdmin.GameHosting.SDK.Objects.Server.GetSelectedServer(); var dirsec = service.GetDirectorySecurityForCurrentUser(); var vdir = new TCAdmin.SDK.VirtualFileSystem.VirtualDirectory(server.OperatingSystem, dirsec); this.EnforceFeaturePermission("FileManager"); if (string.IsNullOrEmpty(file)) { return(new JsonHttpStatusResult(new { Message = "Please choose a file to backup." }, HttpStatusCode.BadRequest)); } var realFileName = Path.GetFileName(file); if (realFileName.Any(Path.GetInvalidFileNameChars().Contains) || !Regex.IsMatch(realFileName, @"^[\w\-.@ ]+$")) { return(new JsonHttpStatusResult(new { Message = "File contains invalid characters." }, HttpStatusCode.BadRequest)); } var fileSystem = server.FileSystemService; var backupSolution = Backup.ParseBackupSolution(backupType, service); var filePath = vdir.CombineWithPhysicalPath(file); var fileSize = fileSystem.GetFileSize(filePath); if (GetBackupsSize(service, backupType) + fileSize > GetBackupsLimit(service, backupType)) { return(new JsonHttpStatusResult(new { Message = "Backing up this file will exceed your assigned capacity." }, HttpStatusCode.BadRequest)); } if (Backup.DoesBackupExist(service, realFileName, backupType)) { return(new JsonHttpStatusResult(new { Message = $"Backup already exists with name <strong>{realFileName}</strong>" }, HttpStatusCode.BadRequest)); } var remoteDownload = new RemoteDownload(server) { DirectorySecurity = service.GetDirectorySecurityForCurrentUser(), FileName = filePath }; var backupName = $"{realFileName}"; var contents = GetFileContents(remoteDownload.GetDownloadUrl()); try { await backupSolution.Backup(backupName, contents, MimeMapping.GetMimeMapping(realFileName)); var fileServer = FileServerModel.DetermineFileServer(service, backupType); var backup = new Backup { ServiceId = service.ServiceId, FileServerId = fileServer.FileServerId, FileName = backupName, BackupType = backupType, }; backup.CustomFields["SIZE"] = fileSize; backup.GenerateKey(); backup.Save(); } catch (Exception e) { return(new JsonHttpStatusResult(new { Message = "Failed to backup - " + e.Message + " | " + e.StackTrace }, HttpStatusCode.InternalServerError)); } return(Json(new { Message = $"Backed up <strong>{backupName}</strong>" })); }