コード例 #1
0
        public override async Task <BackupResponse> Backup(Backup backup, BackupRequest request)
        {
            var service           = new Service(backup.ServiceId);
            var server            = new Server(service.ServerId);
            var fileSystemService = server.FileSystemService;
            var backupLocation    = FileSystem.CombinePath(server.OperatingSystem,
                                                           Configuration.LocalDirectory.ReplaceVariables(service));
            var originalPath = FileSystem.FixAbsoluteFilePath(
                FileSystem.CombinePath(server.OperatingSystem, service.RootDirectory, request.Path,
                                       Compress(backup, request)), server.OperatingSystem);
            var newPath  = FileSystem.CombinePath(server.OperatingSystem, backupLocation, backup.ZipFullName);
            var fileSize = fileSystemService.GetFileSize(originalPath);

            BackupManagerController.ThrowExceedQuota(backup, request, fileSize);
            backup.FileSize = fileSize;

            if (!fileSystemService.DirectoryExists(Path.GetDirectoryName(backupLocation)))
            {
                fileSystemService.CreateDirectory(Path.GetDirectoryName(backupLocation));
            }

            fileSystemService.CopyFile(originalPath, newPath);
            fileSystemService.DeleteFile(originalPath);

            return(new BackupResponse(true));
        }
コード例 #2
0
        public override Task <bool> Delete(Backup backup)
        {
            var service           = new Service(backup.ServiceId);
            var server            = new Server(service.ServerId);
            var fileSystemService = server.FileSystemService;
            var saveTo            = Path.Combine(Configuration.LocalDirectory.ReplaceVariables(service), backup.ZipFullName);

            fileSystemService.DeleteFile(saveTo);
            return(System.Threading.Tasks.Task.FromResult(true));
        }
コード例 #3
0
        public override string Compress(Backup backup, BackupRequest request)
        {
            var service           = new Service(backup.ServiceId);
            var server            = new Server(service.ServerId);
            var directorySecurity = GenerateVirtualDirectorySecurity(service);
            var baseDirectory     =
                FileSystem.CombinePath(server.OperatingSystem, service.RootDirectory, request.Path);
            var fileSystem = server.FileSystemService;
            var toCompress = request.Directories.Select(x => x.Name).ToList();

            toCompress.AddRange(request.Files.Select(x => x.Name + x.Extension));
            return(fileSystem.CompressFiles(baseDirectory, toCompress.ToArray(),
                                            ObjectXml.ObjectToXml(directorySecurity), 500000000));
        }
コード例 #4
0
        public override Task <string> DirectDownloadLink(Backup backup)
        {
            var service = new Service(backup.ServiceId);
            var server  = new Server(service.ServerId);
            var saveTo  = FileSystem.CombinePath(server.OperatingSystem,
                                                 Configuration.LocalDirectory.ReplaceVariables(service), backup.ZipFullName);
            var remoteDownload = new RemoteDownload(server)
            {
                DirectorySecurity = service.GetDirectorySecurityForCurrentUser(),
                FileName          = saveTo
            };

            return(System.Threading.Tasks.Task.FromResult(remoteDownload.GetDownloadUrl()));
        }
コード例 #5
0
        public override async Task <BackupResponse> Backup(Backup backup, BackupRequest request)
        {
            var service           = new Service(backup.ServiceId);
            var server            = new Server(service.ServerId);
            var fileSystemService = server.FileSystemService;
            var combinePath       = FileSystem.FixAbsoluteFilePath(
                FileSystem.CombinePath(server.OperatingSystem, service.RootDirectory, request.Path,
                                       Compress(backup, request)), server.OperatingSystem);
            var fileSize = fileSystemService.GetFileSize(combinePath);

            BackupManagerController.ThrowExceedQuota(backup, request, fileSize);
            backup.FileSize = fileSize;

            var contents = fileSystemService.ReadBinary(combinePath);

            fileSystemService.DeleteFile(combinePath);
            var fileLocation = $"/TCAdminBackupManager/{service.UserId}/{backup.ZipFullName}";
            var ftpStatus    = FtpClient.Upload(contents, fileLocation, createRemoteDir: true,
                                                existsMode: FtpRemoteExists.Overwrite);

            return(new BackupResponse(ftpStatus == FtpStatus.Success));
        }
コード例 #6
0
 private void TcAdminEventsOnServerModified(Server args)
 {
     Console.WriteLine("Server was Modified: " + args.Name);
 }