mirror of
https://github.com/drakkan/sftpgo.git
synced 2024-11-24 08:30:27 +00:00
try to auto create virtual folders if missing
This commit is contained in:
parent
7b0ea8f731
commit
df2e490680
3 changed files with 11 additions and 4 deletions
|
@ -16,8 +16,6 @@ For example if the configure folder has configured `/tmp/mapped` or `C:\mapped`
|
|||
The same virtual folder can be shared among users, different folder quota limits for each user are supported.
|
||||
Folder quota limits can also be included inside the user quota but in this case the folder is considered "private" and sharing it with other users will break user quota calculation.
|
||||
|
||||
The filesystem paths that you want to expose as virtual folders must exist.
|
||||
|
||||
Using the REST API you can:
|
||||
|
||||
- monitor folders quota usage
|
||||
|
|
|
@ -3117,13 +3117,14 @@ func TestVirtualFolders(t *testing.T) {
|
|||
u.Permissions[path.Join(testDir1, "subdir")] = []string{dataprovider.PermCreateSymlinks, dataprovider.PermUpload,
|
||||
dataprovider.PermDelete}
|
||||
|
||||
err := os.MkdirAll(mappedPath, os.ModePerm)
|
||||
assert.NoError(t, err)
|
||||
user, _, err := httpdtest.AddUser(u, http.StatusCreated)
|
||||
assert.NoError(t, err)
|
||||
client, err := getSftpClient(user, usePubKey)
|
||||
if assert.NoError(t, err) {
|
||||
defer client.Close()
|
||||
// check virtual folder auto creation
|
||||
_, err = os.Stat(mappedPath)
|
||||
assert.NoError(t, err)
|
||||
testFileSize := int64(131072)
|
||||
testFilePath := filepath.Join(homeBasePath, testFileName)
|
||||
err = createTestFile(testFilePath, testFileSize)
|
||||
|
|
|
@ -212,6 +212,14 @@ func (fs *OsFs) CheckRootPath(username string, uid int, gid int) bool {
|
|||
if err != nil {
|
||||
return false
|
||||
}
|
||||
if _, err = fs.Stat(v.MappedPath); fs.IsNotExist(err) {
|
||||
err = os.MkdirAll(v.MappedPath, os.ModePerm)
|
||||
fsLog(fs, logger.LevelDebug, "virtual directory %#v for user %#v does not exist, try to create, mkdir error: %v",
|
||||
v.MappedPath, username, err)
|
||||
if err == nil {
|
||||
SetPathPermissions(fs, fs.rootDir, uid, gid)
|
||||
}
|
||||
}
|
||||
}
|
||||
return (err == nil)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue