public HttpResponseMessage Get([FromUri] FileService.RequestObject request, string t) { var loadSettings = LoadSettings(request, t); if (!loadSettings.Success) { log.Info(loadSettings.Error); throw new HttpResponseException(HttpStatusCode.InternalServerError); } if ((fileSystem == null) || (!fileSystem.UserHasUploadPermission)) { throw new HttpResponseException(HttpStatusCode.Unauthorized); } switch (request.Action) { case "download": default: return(DownloadItem(request.Path)); case "downloadMultiple": return(DownloadMultiple(request.Items, request.ToFilename)); } }
public dynamic FileManagerPost([FromBody] FileService.RequestObject request, [FromUri] string t) { var loadSettings = LoadSettings(request, t); if (!loadSettings.Success) { return(new FileService.ReturnObject(loadSettings)); } if (WebConfigSettings.FileServiceRejectFishyPosts) { if (SiteUtils.IsFishyPost(Request)) { return(new FileService.ReturnObject(ReturnResult(OpResult.Denied))); } } if ((fileSystem == null) || (!fileSystem.UserHasUploadPermission && !fileSystem.UserHasBrowsePermission)) { return(new FileService.ReturnObject(ReturnResult(OpResult.Denied))); } StringBuilder returnErrors = new StringBuilder(); Dictionary <string, FileService.ReturnMessage> returnMessages = new Dictionary <string, FileService.ReturnMessage>(); switch (request.Action) { case "list": default: return(ListAllFilesFolders(request.Path)); case "rename": return(RenameItem(request.Item, request.NewItemPath)); case "move": return(MoveItem(request.Items, request.NewPath, returnMessages, returnErrors)); case "copy": return(CopyItem(request.Items, request.SingleFileName, request.NewPath, returnMessages, returnErrors)); case "remove": return(RemoveItem(request.Items, returnMessages, returnErrors)); case "edit": return(EditItem(request.Item, request.Content)); case "getContent": return(GetFileContent(request.Item)); case "createFolder": return(CreateFolder(request.NewPath)); // There is no infrastructure to edit permissions... yet. //case "changePermissions": case "compress": return(CompressItems(request.Items, request.Destination, request.CompressedFilename)); case "extract": return(ExtractItems(request.Item, request.Destination, request.FolderName)); } ; }
private FileService.ReturnMessage LoadSettings(FileService.RequestObject request, string t) { allowEditing = WebConfigSettings.AllowFileEditInFileManager; overwriteExistingFiles = WebConfigSettings.FileManagerOverwriteFiles; siteSettings = CacheHelper.GetCurrentSiteSettings(); if (siteSettings == null) { return(new FileService.ReturnMessage { Success = false, Error = Resource.FileSystemSiteSettingsNotLoaded }); } if (WebConfigSettings.RequireFileSystemServiceToken && (t != Global.FileSystemToken.ToString())) { log.Info(Resource.FileSystemInvalidToken); return(new FileService.ReturnMessage { Success = false, Error = Resource.FileSystemInvalidToken }); } FileSystemProvider p = FileSystemManager.Providers[WebConfigSettings.FileSystemProvider]; if (p == null) { log.Error(string.Format(Resource.FileSystemProviderNotLoaded, WebConfigSettings.FileSystemProvider)); return(new FileService.ReturnMessage { Success = false, Error = string.Format(Resource.FileSystemProviderNotLoaded, WebConfigSettings.FileSystemProvider) }); } fileSystem = p.GetFileSystem(); if (fileSystem == null) { log.Error(string.Format(Resource.FileSystemNotLoadedFromProvider, WebConfigSettings.FileSystemProvider)); return(new FileService.ReturnMessage { Success = false, Error = string.Format(Resource.FileSystemNotLoadedFromProvider, WebConfigSettings.FileSystemProvider) }); } virtualPath = fileSystem.VirtualRoot; if (WebUser.IsAdminOrContentAdmin || SiteUtils.UserIsSiteEditor() || WebUser.IsInRoles(siteSettings.GeneralBrowseAndUploadRoles)) { allowedExtensions = WebConfigSettings.AllowedUploadFileExtensions; } else if (WebUser.IsInRoles(siteSettings.UserFilesBrowseAndUploadRoles)) { currentUser = SiteUtils.GetCurrentSiteUser(); if (currentUser == null) { return(new FileService.ReturnMessage { Success = false, Error = Resource.FileSystemUserNotAuthorized }); } allowedExtensions = WebConfigSettings.AllowedLessPriveledgedUserUploadFileExtensions; } if (WebConfigSettings.LogAllFileServiceRequests) { StringBuilder message = new StringBuilder(); message.AppendLine("\nFile Manager Activity:"); message.AppendFormat("Request Action: {0}\n", request.Action); if (request.CompressedFilename != null) { message.AppendFormat("CompressedFilename: {0}\n", request.CompressedFilename); } if (request.Content != null) { message.AppendFormat("Content: {0}\n", request.Content); } if (request.Destination != null) { message.AppendFormat("Destination: {0}\n", request.Destination); } if (request.Item != null) { message.AppendFormat("Item: {0}\n", request.Item); } if (request.Items != null) { message.AppendFormat("Items: {0}\n", request.Items); } if (request.NewItemPath != null) { message.AppendFormat("NewItemPath: {0}\n", request.NewItemPath); } if (request.NewPath != null) { message.AppendFormat("NewPath: {0}\n", request.NewPath); } if (request.FolderName != null) { message.AppendFormat("FolderName: {0}\n", request.FolderName); } if (request.Path != null) { message.AppendFormat("Path: {0}\n", request.Path); } if (request.Perms != null) { message.AppendFormat("Perms: {0}\n", request.Perms); } if (request.PermsCode != null) { message.AppendFormat("PermsCode: {0}\n", request.PermsCode); } if (request.Recursive != null) { message.AppendFormat("Recursive: {0}\n", request.Recursive); } if (request.SingleFileName != null) { message.AppendFormat("SingleFileName: {0}\n", request.SingleFileName); } if (request.ToFilename != null) { message.AppendFormat("ToFilename: {0}\n", request.ToFilename); } log.Info(message); } return(new FileService.ReturnMessage { Success = true }); }