コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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));
            }
            ;
        }
コード例 #3
0
        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
            });
        }