mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-08 07:10:56 +03:00
sftpd: add support for excluding virtual folders from user quota limit
Fixes #110
This commit is contained in:
@@ -140,7 +140,7 @@ Output:
|
||||
Command:
|
||||
|
||||
```
|
||||
python sftpgo_api_cli.py update-user 9576 test_username --password "test_pwd" --home-dir="/tmp/test_home_dir" --uid 0 --gid 33 --max-sessions 3 --quota-size 0 --quota-files 4 --permissions "*" --subdirs-permissions "/dir1::list,download,create_symlinks" --upload-bandwidth 90 --download-bandwidth 80 --status 1 --expiration-date "" --allowed-ip "" --denied-ip "192.168.1.0/24" --denied-login-methods "" --fs local --virtual-folders "/vdir1::/tmp/mapped1" "/vdir2::/tmp/mapped2" --allowed-extensions "" --denied-extensions ""
|
||||
python sftpgo_api_cli.py update-user 9576 test_username --password "test_pwd" --home-dir="/tmp/test_home_dir" --uid 0 --gid 33 --max-sessions 3 --quota-size 0 --quota-files 4 --permissions "*" --subdirs-permissions "/dir1::list,download,create_symlinks" --upload-bandwidth 90 --download-bandwidth 80 --status 1 --expiration-date "" --allowed-ip "" --denied-ip "192.168.1.0/24" --denied-login-methods "" --fs local --virtual-folders "/vdir1::/tmp/mapped1" "/vdir2::/tmp/mapped2::1" --allowed-extensions "" --denied-extensions ""
|
||||
```
|
||||
|
||||
Output:
|
||||
@@ -203,10 +203,12 @@ Output:
|
||||
"username": "test_username",
|
||||
"virtual_folders": [
|
||||
{
|
||||
"exclude_from_quota": false,
|
||||
"mapped_path": "/tmp/mapped1",
|
||||
"virtual_path": "/vdir1"
|
||||
},
|
||||
{
|
||||
"exclude_from_quota": true,
|
||||
"mapped_path": "/tmp/mapped2",
|
||||
"virtual_path": "/vdir2"
|
||||
}
|
||||
@@ -265,10 +267,12 @@ Output:
|
||||
"username": "test_username",
|
||||
"virtual_folders": [
|
||||
{
|
||||
"exclude_from_quota": false,
|
||||
"mapped_path": "/tmp/mapped1",
|
||||
"virtual_path": "/vdir1"
|
||||
},
|
||||
{
|
||||
"exclude_from_quota": true,
|
||||
"mapped_path": "/tmp/mapped2",
|
||||
"virtual_path": "/vdir2"
|
||||
}
|
||||
|
||||
@@ -110,12 +110,19 @@ class SFTPGoApiRequests:
|
||||
if '::' in f:
|
||||
vpath = ''
|
||||
mapped_path = ''
|
||||
exclude_from_quota = False
|
||||
values = f.split('::')
|
||||
if len(values) > 1:
|
||||
vpath = values[0]
|
||||
mapped_path = values[1]
|
||||
if len(values) > 2:
|
||||
try:
|
||||
exclude_from_quota = int(values[2]) > 0
|
||||
except:
|
||||
pass
|
||||
if vpath and mapped_path:
|
||||
result.append({"virtual_path":vpath, "mapped_path":mapped_path})
|
||||
result.append({"virtual_path":vpath, "mapped_path":mapped_path,
|
||||
"exclude_from_quota":exclude_from_quota})
|
||||
return result
|
||||
|
||||
def buildPermissions(self, root_perms, subdirs_perms):
|
||||
@@ -508,7 +515,8 @@ def addCommonUserArguments(parser):
|
||||
parser.add_argument('--subdirs-permissions', type=str, nargs='*', default=[], help='Permissions for subdirs. '
|
||||
+'For example: "/somedir::list,download" "/otherdir/subdir::*" Default: %(default)s')
|
||||
parser.add_argument('--virtual-folders', type=str, nargs='*', default=[], help='Virtual folder mapping. For example: '
|
||||
+'"/vpath::/home/adir" "/vpath::C:\adir", ignored for non local filesystems. Default: %(default)s')
|
||||
+'"/vpath::/home/adir" "/vpath::C:\adir::1". If the optional third argument is > 0 the virtual '
|
||||
+'folder will be excluded from user quota. Ignored for non local filesystems. Default: %(default)s')
|
||||
parser.add_argument('-U', '--upload-bandwidth', type=int, default=0,
|
||||
help='Maximum upload bandwidth as KB/s, 0 means unlimited. Default: %(default)s')
|
||||
parser.add_argument('-D', '--download-bandwidth', type=int, default=0,
|
||||
|
||||
Reference in New Issue
Block a user