public VirtualDirectorySecurity(string currentDirectory) { UserType = UserType.Admin; var ds = new TCAdmin.SDK.VirtualFileSystem.VirtualDirectorySecurity { PermissionMode = PermissionMode.Basic, Permissions = Permission.Read | Permission.Write | Permission.Delete, PermissionType = PermissionType.Root, RootPhysicalPath = currentDirectory + "\\", DisableOwnerCheck = true, DisableSymlinkCheck = true }; VirtualDirectorySecurityObject = ds; VirtualDirectorySecurityString = ObjectXml.ObjectToXml(ds); }
public VirtualDirectorySecurity(TCAdmin.SDK.Web.References.FileSystem.FileSystem fileSystem, string currentDirectory, UserType type, int gameId) { UserType = type; if (!fileSystem.DirectoryExists(currentDirectory)) { throw new CustomMessageException(EmbedTemplates.CreateErrorEmbed("Could not find directory.")); } var game = new TCAdmin.GameHosting.SDK.Objects.Game(gameId); var ds = new TCAdmin.SDK.VirtualFileSystem.VirtualDirectorySecurity { PermissionMode = PermissionMode.Basic, Permissions = Permission.Read | Permission.Write | Permission.Delete, PermissionType = PermissionType.Root, RootPhysicalPath = currentDirectory + "\\", RealPhysicalPath = TCAdmin.SDK.Misc.FileSystem.FixAbsoluteFilePath(currentDirectory, OperatingSystem.Windows), DisableOwnerCheck = true, DisableSymlinkCheck = true, VirtualDirectoryName = currentDirectory }; if (type == UserType.SubAdmin) { var f = game.FileSystemPermissions.FirstOrDefault(x => x.RootPhysicalPath == "$[SubAdminFiles]"); ds.AdditionalPermissions = f.AdditionalPermissions; ds.Filters = f.Filters; } if (type == UserType.User) { var f = game.FileSystemPermissions.FirstOrDefault(x => x.RootPhysicalPath == "$[UserFiles]"); ds.AdditionalPermissions = f.AdditionalPermissions; ds.Filters = f.Filters; } VirtualDirectorySecurityObject = ds; VirtualDirectorySecurityString = ObjectXml.ObjectToXml(ds); }
public async Task DownloadFile(FileInfo file) { var server = new Server(Service.ServerId); var directorySecurity = new TCAdmin.SDK.VirtualFileSystem.VirtualDirectorySecurity { Permissions = Permission.Read | Permission.Write | Permission.Delete, PermissionType = PermissionType.Root, RelativeExecutable = Strings.ReplaceCaseInsensitive(Service.Executable, Service.RootDirectory, string.Empty), VirtualDirectoryName = Service.ConnectionInfo, RootPhysicalPath = Service.RootDirectory, RealPhysicalPath = TCAdmin.SDK.Misc.FileSystem.FixAbsoluteFilePath(Service.RootDirectory, server.OperatingSystem), ServerId = server.ServerId }; var download = new RemoteDownload(server) { DirectorySecurity = directorySecurity, FileName = file.FullName }; if (file.Length / 1024 > 8) { await CommandContext.RespondAsync( embed : EmbedTemplates.CreateSuccessEmbed( $"[<{download.GetDownloadUrl()}>](**Click here to download {file.Name}**)")); } else { using (var client = new WebClient()) { client.DownloadFileCompleted += delegate { CommandContext.RespondWithFileAsync(file.Name); }; client.DownloadFileAsync(new Uri(download.GetDownloadUrl()), file.Name); } } await Task.Delay(3000); File.Delete(file.Name); }